4

私はSilverlightでカスタムコントロールを構築しています。そのプロパティが変更されると、フィールドの1つをDependencyPropertyの値にアニメーション化します。具体的には、コントロールテンプレートに、バックグラウンドが色を変えるたびに背景の色にアニメートするアイテムがあります。だから、私が持っているものです。SilverlightのストーリーボードでTemplateBindingを使用することは可能ですか?

<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 --> 

は、私は、カスタム制御コードでアニメーションをトリガーするんだけど、アニメーションが開始したときの値が更新されるように、それは見ていません。何かが欠けているのか、私のControlTemplate内のリソースにTemplateBindingを適用することが可能なのか疑問に思っていました。

答えて

0

が可能な解決策としてExpression Blend Samplesを見てください(私は現在の手動EasingColorKeyFrame値に背景を割り当てるが、TemplateBindingのソリューションはあまりきれいになります。回避策使用しています)あなたの問題に。あなたの探している効果を作成するために、あなたのControlTemplate内で使用できるいくつかの相互作用クラスがあります。ドキュメントは素晴らしいものではありませんが、オブジェクトブラウザの説明にはいくつかの手がかりがあります:)

例えば、私はControlStoryboardAction動作を含むListBox ItemTemplateを持っています。このBehaviorのトリガは、DataContextフィールドに特定の値が含まれているときに発生するDataTriggerです。 (私の場合、重大度== "高")トリガーは、ItemTemplate内にストーリーボードを再生します。

<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(私が使用しています。 SL3の2009年7月リリース)
  3. <im: - Microsoft.Expression.Interactivity.Med ia
関連する問題