如果点击太快,WPF故事板动画会冻结

时间:2015-02-06 10:15:25

标签: c# wpf xaml animation

我目前在使用下面的简单XAML代码时遇到了烦人的问题。动画会正确触发,如果在动画完成后单击按钮,动画将始终正确触发。如果我快速点击几次,动画将冻结,动画将永远不会再次运行。

非常感谢你的帮助!

<!-- Admin Login Button /-->
    <ToggleButton Name="LoginButton" IsChecked="{Binding ElementName=LoginPopup, Path=IsOpen, Mode=TwoWay}" HorizontalAlignment="Right" Margin="0,35,32.334,0" VerticalAlignment="Top" Width="97" Height="77" BorderThickness="0" Grid.Column="1" Grid.ColumnSpan="2">
        <ToggleButton.Background>
            <ImageBrush ImageSource="/Resources/Images;component/Resources/titleAboutIcon.png"/>
        </ToggleButton.Background>
        <!--  <Frame x:Name="AdminFrame" Height="77" Width="97"/> /-->
        <ToggleButton.RenderTransform>
            <ScaleTransform x:Name="Buttonscale" ScaleX="1" ScaleY="1" CenterX="0" CenterY="{Binding ElementName=LoginButton, Path=ActualHeight}" />
        </ToggleButton.RenderTransform>
        <ToggleButton.Triggers>
            <EventTrigger RoutedEvent="Button.Click">
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation Storyboard.TargetName="Buttonscale" Storyboard.TargetProperty="(ScaleTransform.ScaleX)" To="1.25" Duration="0:0:0.25" AutoReverse="True"/>
                        <DoubleAnimation Storyboard.TargetName="Buttonscale" Storyboard.TargetProperty="(ScaleTransform.ScaleY)" To="1.25" Duration="0:0:0.25" AutoReverse="True"/>
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
        </ToggleButton.Triggers>
    </ToggleButton>
    <!-- Admin Login Button /-->

1 个答案:

答案 0 :(得分:2)

您可以添加FillBehavior =&#34;停止&#34;到你的故事板,所以它将停止并重置动画属性值而不是冻结它们(HoldEnd是FillBehavior的默认值,因此它不会将值更改回默认值)。

来自MSDN:

  

当您希望动画在其活动期间结束后保持其值时,将动画FillBehavior属性设置为HoldEnd。已经达到其活动期间结束且具有HoldEnd的FillBehavior设置的动画被称为处于填充期间。当您想要动画在其活动期间结束后保持其值时,请设置它   FillBehavior属性为Stop。

https://msdn.microsoft.com/en-us/library/system.windows.media.animation.timeline.fillbehavior(v=vs.110).aspx