我正在 Silverlight 中构建一个自定义控件,并且我希望其中一个字段在该属性更改时动画到 DependencyProperty 的值。更具体地说,我的控件模板中有特定的项目,当背景改变颜色时,我想将其设置为背景颜色。所以,我所拥有的是:
<ControlTemplate TargetType="local:MyType">
<Grid x:Name="PART_RootElement">
<Grid.Resources>
<Storyboard x:Name="PART_FillAnimation">
<ColorAnimationUsingKeyFrames
BeginTime="00:00:00"
Storyboard.TargetName="PART_MainPath"
Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)">
<EasingColorKeyFrame
x:Name="PATH_FillKeyframe"
KeyTime="00:00:01"
Value="{TemplateBinding Background}"/>
</ColorAnimationUsingKeyFrames>
</Storyboard>
</Grid.Resources>
<!-- the rest of the template -->
我在自定义控件代码中触发了动画,但是当动画开始时,看起来值并没有更新。我只是想知道我是否遗漏了什么,或者是否有可能将 TemplateBinding 应用于我的 ControlTemplate 中的资源。
(我目前正在使用手动将背景分配给 EasingColorKeyFrame 值的解决方法,但 TemplateBinding 解决方案会更干净。)