是否可以在Silverlight的故事板中使用TemplateBinding?

时间:2009-08-26 18:39:42

标签: animation silverlight-3.0 custom-controls templatebinding

我正在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 -->

我在自定义控件代码中触发动画,但是当动画启动时,它看起来不像Value正在更新。我只是想知道我是否遗漏了某些内容,或者是否可以将TemplateBinding应用于我的ControlTemplate中的资源。

(我目前正在使用手动将背景分配给EasingColorKeyFrame值,但TemplateBinding解决方案会更清晰。)

1 个答案:

答案 0 :(得分:0)

请查看 Expression Blend Samples 作为您问题的可能解决方案。您可以在ControlTemplate中使用许多Interactivity类来创建您要查找的效果。文档不是很好,但对象浏览器中的描述应该为您提供更多线索:)

例如,我有一个包含ControlStoryboardAction行为的ListBox ItemTemplate。此行为的触发器是DataTrigger,它在DataContext字段包含特定值时触发。 (在我的情况下 Severity ==“High”)然后触发器在ItemTemplate中播放一个Storyboard。

<i:Interaction.Triggers>                                
<is:DataTrigger Binding="{Binding Severity, Mode=OneWay}" Value="High">
    <im:ControlStoryboardAction Storyboard="{StaticResource flashLight}" IsEnabled="True" />
</is:DataTrigger>

引用了以下命名空间:

  1. <i: - System.Windows.Interactivity
  2. <is: - Expression.Samples.Interactivity(可从上面的链接获得。我使用2009年7月发布的SL3)
  3. <im: - Microsoft.Expression.Interactivity.Media