我想什么
我想重复使用多个一些风格UserControl
的类型。
我想一些背景Border
控制闪烁,我想他们都使用相同的样式,静态资源和动画,让他们都在同步闪光。
我怎样,我试图做到这一点
为此,我在一个资源字典中定义了一些常见的颜色,就像这样:
<SolidColorBrush x:Key="StatusErrorBackground" Color="#440000" />
...我也这个字典中定义的故事板,就像这样:
<Storyboard x:Key="BackgroundAnimation">
<ColorAnimation
Storyboard.Target="{StaticResource StatusErrorBackground}"
Storyboard.TargetProperty="Color"
From="#440000"
To="#ff0000"
Duration="0:0:1"
RepeatBehavior="Forever"
AutoReverse="True"/>
</Storyboard>
然后,我添加了下面的顶级UserControl
:
<FrameworkElement.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="CommonResources.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</FrameworkElement.Resources>
<FrameworkElement.Triggers>
<EventTrigger RoutedEvent="FrameworkElement.Loaded">
<BeginStoryboard Storyboard="{StaticResource BackgroundAnimation}"/>
</EventTrigger>
</FrameworkElement.Triggers>
...然后在其他各种UserControl
S中的的孩子,我重新导入ResourceDictionary
的上方,然后使用{StaticResource StatusErrorBackground}
为Background
。
有问题的元素是红色(如SolidColorBrush
声明), 但他们不闪烁 。
模糊认识迄今
也许这样做并不会提高对有问题的内容适当的PropertyChanged通知,因此他们没有重绘? 或类似的东西。 在Color
上财产SolidColorBrush
不是依赖属性,但SolidColorBrush
实现IAnimatable
,所以很明显有神奇的事情发生在幕后这里后面我不明白。
或者它是因为我导入相同的资源字典在两个不同的地方(曾经在我的顶级UserControl
加上曾经在我的孩子),我结束了两个独立的StaticResource
引用? 如果导入相同ResourceDictionary
文件在两个不同的控件,它为每个独立的资源? 在这种情况下,我也许可以通过在应用程序层面拉来解决这个问题,我想...
谁能告诉我什么,我做错了,我怎么可能去修复它?