ColorAnimation 不触发
ColorAnimation does not trigger
我尝试为模板的 LinearGradientBrush 制作动画。如果执行了单击,我想更改 canvas 背景的颜色。 "Pressed" 事件被触发,但没有任何反应。
<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>
我看到上面有一个 x:Key
。如果这只是您的 Button
样式模板中的一个片段,那么只需删除 x:Key,但是如果此 ControlTemplate
被用作资源,那么您只是点击了错误的 TargetProperty,因为我很确定 Canvas 是 Panel.
,您可以只替换 Storyboard.TargetProperty
并在动画中丢失 From
属性,如工作 ColorAnimation
中所示下面。
<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"/>
我尝试为模板的 LinearGradientBrush 制作动画。如果执行了单击,我想更改 canvas 背景的颜色。 "Pressed" 事件被触发,但没有任何反应。
<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>
我看到上面有一个 x:Key
。如果这只是您的 Button
样式模板中的一个片段,那么只需删除 x:Key,但是如果此 ControlTemplate
被用作资源,那么您只是点击了错误的 TargetProperty,因为我很确定 Canvas 是 Panel.
,您可以只替换 Storyboard.TargetProperty
并在动画中丢失 From
属性,如工作 ColorAnimation
中所示下面。
<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"/>