【发布时间】:2013-06-28 11:25:10
【问题描述】:
我有一个窗口,上面有颜色/画笔的数字或动态资源。
例如这个;示例 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)
这适用于其他地方,但不适用于上述情况。有趣的是,如果我使用以下内容。我能看到的唯一区别是一个是颜色,另一个是 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>
任何帮助将不胜感激。
【问题讨论】:
-
您具体需要什么?有些人不明白这个问题。
-
如果我交换资源文件,那么一些动态资源不会更新。有些人会。为什么上面没有更新?