WPF在XAML中实现持续动画的暂停、恢复、停止

时间:2023-03-08 16:18:43

1.动画通过EventTrigger监听按钮的FrameworkElement.Loaded事件,但控件载入时就进行动画,

持续动画通过<BeginStoryboard Name="yourStoryName">下的<Storyboard>或者子动画的RepeatBehavior=Forever来实现,

鼠标的移入移出,通过监听UIElement.MouseEnter和UIElement.MouseLeave事件,

 鼠标移入时,通过<PauseStoryboard BeginStoryboardName="yourStoryName"/>来暂停动画,

鼠标移出时,通过<ResumeStoryboard BeginStoryboardName="yourStoryName"/>来恢复动画,具体代码如下:

<Button Content="Click Me">
<Button.Triggers>
<EventTrigger RoutedEvent="FrameworkElement.Loaded">
<BeginStoryboard Name="OpacityStoryboard">
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="(UIElement.Opacity)"
From="0" To="1" RepeatBehavior="Forever" AutoReverse="True" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<EventTrigger RoutedEvent="UIElement.MouseEnter">
<PauseStoryboard BeginStoryboardName="OpacityStoryboard" />
</EventTrigger>
<EventTrigger RoutedEvent="UIElement.MouseLeave">
<ResumeStoryboard BeginStoryboardName="OpacityStoryboard" />
</EventTrigger>
</Button.Triggers>
</Button>

停止动画时,使用<StopStoryboard BeginStoryboardName="yourStoryName"/>