2016-04-28 7 views
1

私のテンプレートのLinearGradientBrushをアニメーションしようとしました。クリックが行われた場合、キャンバスの背景の色を変更したいと思います。 「押された」イベントは発生しますが、何も起こりません。ColorAnimationがトリガーしません

 <ControlTemplate x:Key="ButtonTemplate" TargetType="Button"> 
     <Grid> 
      <VisualStateManager.VisualStateGroups> 
       <VisualStateGroup x:Name="CommonStates"> 
        <VisualState x:Name="Normal"/> 
        <VisualState x:Name="MouseOver" /> 
        <VisualState x:Name="Pressed"> 
         <Storyboard AutoReverse="True" Duration="0:0:0.5"> 
          <ColorAnimation Storyboard.TargetName="Form" Storyboard.TargetProperty="(Canvas.Background).(LinearGradientBrush.GradientStops)[0].(GradientStop.Color)" To="Red" Duration="0:0:0.5" /> 
          <ColorAnimation Storyboard.TargetName="Form" Storyboard.TargetProperty="(Canvas.Background).(LinearGradientBrush.GradientStops)[1].(GradientStop.Color)" From="Black" To="Red" Duration="0:0:0.5" /> 
         </Storyboard> 
        </VisualState> 
        <VisualState x:Name="Disabled" /> 
       </VisualStateGroup> 
      </VisualStateManager.VisualStateGroups> 

      <Canvas Name="Form" Height="35"> 
       <Canvas.Background> 
        <LinearGradientBrush EndPoint="0.5,0.5" StartPoint="0.5,0"> 
         <GradientStop Color="#FF007FEA" Offset="0"/> 
         <GradientStop Color="#FF004580" Offset="1"/> 
        </LinearGradientBrush> 
       </Canvas.Background> 
      </Canvas> 

      <ContentPresenter Content="{TemplateBinding Content}" HorizontalAlignment="Center" VerticalAlignment="Center" /> 
     </Grid> 
    </ControlTemplate> 

答えて

1

私はそこにx:Keyを見る。 Buttonスタイルテンプレートから切り捨てただけの場合は、x:Keyを削除してください。このControlTemplateがリソースとして使用されている場合は、間違ったTargetPropertyを打つことになります。CanvasはPanel.ですStoryboard.TargetPropertyを置き換えて、ColorAnimationの下に示したようなアニメーションのFromという属性を失うことができます。

<ColorAnimation Duration="0" To="Red" 
       Storyboard.TargetProperty="(Panel.Background).(GradientBrush.GradientStops)[0].(GradientStop.Color)" 
       Storyboard.TargetName="Form"/> 
<ColorAnimation Duration="0" To="Black" 
       Storyboard.TargetProperty="(Panel.Background).(GradientBrush.GradientStops)[1].(GradientStop.Color)" 
       Storyboard.TargetName="Form"/> 
+0

はい、これはStaticResourceとして使用されます。そしてPanel.Backgroundが動作します。ありがとう –

関連する問題