停止动画而不重置为开始位置wpf
我有以下按钮样式,用于刷新按钮-当用户将鼠标悬停在按钮上时,按钮上的图像(在本例中为圆形箭头)会旋转:停止动画而不重置为开始位置wpf,wpf,animation,triggers,rendertransform,Wpf,Animation,Triggers,Rendertransform,我有以下按钮样式,用于刷新按钮-当用户将鼠标悬停在按钮上时,按钮上的图像(在本例中为圆形箭头)会旋转: <Style x:Key="RefreshButton" TargetType="Button"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType=&
<Style x:Key="RefreshButton" TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid Name="buttonContent">
<Image Source="/View/Images/Retry Green2.png" x:Name="Picture" RenderTransformOrigin="0.5,0.5">
<Image.RenderTransform>
<RotateTransform x:Name="AnimatedRotateTransform" Angle="0" />
</Image.RenderTransform>
<Image.Triggers>
<EventTrigger RoutedEvent="MouseEnter">
<BeginStoryboard Name="Spinner">
<Storyboard>
<DoubleAnimation Storyboard.TargetName="AnimatedRotateTransform"
Storyboard.TargetProperty="Angle"
From="0" To="360" Duration="0:0:1"
RepeatBehavior="Forever"
/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<EventTrigger RoutedEvent="MouseLeave">
<StopStoryboard BeginStoryboardName="Spinner"/>
</EventTrigger>
</Image.Triggers>
</Image>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsPressed" Value="True">
<Setter Property="RenderTransform" TargetName="buttonContent">
<Setter.Value>
<TranslateTransform X="0" Y="2"/>
</Setter.Value>
</Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
当用户将鼠标移离按钮时,它停止旋转,这很好,但它也会在零旋转时恢复到其原始位置(当用户单击按钮时也会发生这种情况)。在样式中,是否有任何方法可以更改行为,以便在用户移开鼠标或单击按钮并在第二个渲染变换中向下变换两个点时,停止旋转并保持在新的旋转方向
如果用户鼠标再次在按钮上方移动,则动画应在其停止的位置继续
我知道这是一件很小的事情,但这是一件不会消失的小事,每次我使用这个模板,我都会再次尝试解决这个问题,但没有成功。我忍不住想我错过了什么。我发现的所有相关问题都与动画有关,根本没有停止——缩小搜索范围非常困难。我相信您正在寻找这一点: 添加到动画中 编辑:再加上用
PauseStoryBoard
替换StopStoryBoard
应该可以解决问题。最终的xaml在映像中应如下所示。触发器节点:
<Image.Triggers>
<EventTrigger RoutedEvent="MouseEnter">
<BeginStoryboard Name="Spinner">
<Storyboard>
<DoubleAnimation Storyboard.TargetName="AnimatedRotateTransform"
Storyboard.TargetProperty="Angle"
IsAdditive="true"
From="0" To="360" Duration="0:0:1"
RepeatBehavior="Forever"
/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<EventTrigger RoutedEvent="MouseLeave">
<PauseStoryboard BeginStoryboardName="Spinner"/>
</EventTrigger>
</Image.Triggers>
我看到这将有助于从非零起点继续动画,但只要鼠标离开按钮,旋转仍然会回到零。不,没关系-在其他搜索中,我发现我应该使用暂停脚本
而不是停止脚本
-然后它就可以工作了!