彩色动画不会触发



我尝试为模板的LinearGradientBrush设置动画。如果执行了单击,我想更改画布背景的颜色。"按下"事件被触发,但没有任何反应。

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

最新更新