0

色/ブラシの数値または動的リソースを含むウィンドウがあります。

たとえば、これ; 例 1は「DynamicResource ColFancyMed」を更新しません

<Rectangle x:Name="dbBarPeekOutRect1" Margin="3,10,10,10" >
    <Rectangle.Fill>
        <SolidColorBrush Color="{DynamicResource ColFancyMed}" />
    </Rectangle.Fill>
</Rectangle>

アプリが起動すると、リソース ファイルが読み込まれ、正しい色が表示されます。

ただし、これらの色にはテーマがあるため、これらのリソース キーを含む多くのリソース ディクショナリがあります。したがって、リソース辞書を次のように変更します

Application.Current.Resources.MergedDictionaries.RemoveAt(0)
Application.Current.Resources.MergedDictionaries.Insert(0, dict)

これは他の場所では機能しますが、上記では機能しません。面白いのは、次を使用する場合です。私が見ることができる唯一の違いは、1 つは Color で、もう 1 つは SolidColorBrush です。

例 2は「DynamicResource ColFancyMed」を更新します

<Rectangle x:Name="dbBarPeekOutRect1" Margin="3,10,10,10" Fill="{DynamicResource ColFancyMed}"/>

すると色が変わります。

では、なぜ例 1 は機能せず、例 2 は機能するのでしょうか?

同様に、それが機能しない別の場所は、たとえば次のとおりです。

<Storyboard x:Key="dbBarPeekOutHighlight">
        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)" Storyboard.TargetName="dbBarPeekOutRect1">
            <EasingColorKeyFrame KeyTime="0" Value="{DynamicResource ColFancyMed}"/>
            <EasingColorKeyFrame KeyTime="0:0:0.2" Value="#FFF2F6F9"/>
        </ColorAnimationUsingKeyFrames>
        <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)" Storyboard.TargetName="dbBarPeekOutRect2">
            <EasingColorKeyFrame KeyTime="0" Value="{DynamicResource ColFancyMed}"/>
            <EasingColorKeyFrame KeyTime="0:0:0.2" Value="#FFF2F6F9"/>
        </ColorAnimationUsingKeyFrames>
    </Storyboard>

どんな助けでも大歓迎です。

4

2 に答える 2