我正在尝试解决我在故事板中运行ColorAnimation的问题,而“To”值只能由静态类提供。
基本上,期望的结果是:
<ColorAnimation BeginTime="0:00:00" Duration="0:00:00.333"
Storyboard.TargetName="border"
Storyboard.TargetProperty="(Background).(SolidColorBrush.Color)"
To="{Binding XYZ, Source={x:Static ZZZ}}" />
显然这会崩溃,因为绑定不能放在ColorAnimation的To值中。我会考虑在ControlTemplate资源中复制静态类的属性,以便可以使用{StaticResource}:
<ControlTemplate.Resources>
<Color x:Key="animation_to_value">{Binding ...}</Color>
</ControlTemplate.Resource>
我不确定这是否可行或语法是否正确。
我考虑的最终解决方案是在运行时在代码隐藏中将颜色资源插入到App.xaml的资源字典中,并将故事板重构为单独的资源字典并在运行时将其合并,以便解析静态资源插入颜色后:
public App()
{
this.Resources["storyboard_to_value"] = Colors.Red;
this.Resources.MergedDictionaries.Add(GetDictionaryWithStoryboard());
}
但这似乎有点矫枉过正。请指教。