XAML:不会播放样式ControlTemplate故事板动画,但会触发IS命中

时间:2018-08-23 08:23:19

标签: wpf xaml triggers storyboard styles

我有一种目前正在制作的按钮样式。我想在用户单击按钮时触发平滑的动画。我需要将两个矩形包含在ControlTemplate中,如下所示。

这个想法是,按下按钮时,其中一个矩形会淡出,释放时会逐渐变回。

触发器被击中。我可以通过在Trigger.EnterActions之前执行以下操作为按钮添加简单的颜色更改来证明这一点:

<Setter TargetName="BackgroundNormal" Property="Fill" Value="Cyan" />

情节提要无论其内容如何似乎都不会触发。

请问我在做什么错?

<Style x:Key="MyButton" TargetType="{x:Type Button}">

    <Setter Property="Foreground" Value="{DynamicResource TextParagraphWhiteP1}" />
    <Setter Property="BorderThickness" Value="1" />
    <Setter Property="FontFamily" Value="Segoe UI" />
    <Setter Property="FontWeight" Value="Light" />
    <Setter Property="Background" Value="{DynamicResource Gradient_Playback_ButtonBase}" />
    <Setter Property="MinHeight" Value="15" />
    <Setter Property="MinWidth" Value="0" />
    <Setter Property="Padding" Value="6,2" />
    <Setter Property="BorderBrush" Value="Black" />
    <Setter Property="SnapsToDevicePixels" Value="true" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Button}">

                <Grid>
                    <Rectangle x:Name="BackgroundDepressed" Fill="Magenta" />
                    <Rectangle x:Name="BackgroundNormal" Fill="{DynamicResource Gradient_Playback_ButtonBase}" />

                </Grid>
                <ControlTemplate.Resources>

                    <Storyboard x:Key="PressDown">
                        <DoubleAnimation Storyboard.TargetName="BackgroundNormal" Storyboard.TargetProperty="(UIElement.Opacity)" To="0.0" Duration="0:0:0.1" />
                    </Storyboard>
                    <Storyboard x:Key="Release">
                        <DoubleAnimation Storyboard.TargetName="BackgroundNormal" Storyboard.TargetProperty="(UIElement.Opacity)" To="1.0" Duration="0:0:0.35" />
                    </Storyboard>
                </ControlTemplate.Resources>
                <ControlTemplate.Triggers>

                    <Trigger Property="IsPressed" Value="true">
                        <Trigger.EnterActions>
                            <BeginStoryboard Storyboard="{StaticResource PressDown}" />
                        </Trigger.EnterActions>
                    </Trigger>
                    <Trigger Property="IsPressed" Value="false">
                        <Trigger.EnterActions>
                            <BeginStoryboard Storyboard="{StaticResource Release}" />
                        </Trigger.EnterActions>
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

0 个答案:

没有答案