我有一个基于绑定到DataTrigger
的DependencyProperty
的自定义用户控件来动画。如果DependencyProperty
等于Failure,它应该在用户控件中动画矩形(名为buttonColor)的填充颜色。
由于某种原因,即使我将RepeatBehavior
设置为包括1在内的任何值,它也总是永远循环。
如果我删除了RepeatBehavior属性,它只播放一次动画(如预期)。下面是我有问题的代码:
<DataTrigger Binding="{Binding Path=ButtonAction.Status}" Value="Failure">
<DataTrigger.EnterActions>
<StopStoryboard BeginStoryboardName="Pulse"/>
<BeginStoryboard>
<Storyboard RepeatBehavior="1">
<ColorAnimation Storyboard.TargetName="buttonColor"
Storyboard.TargetProperty="Fill.Color"
To="{StaticResource FailedColor}"
AutoReverse="True" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
重复N
次的正确语法是:
<Storyboard RepeatBehavior="Nx">
例如:<Storyboard RepeatBehavior="6x">
设置持续时间值还将限制重复行为,因为它具有优先级。所以如果你在ColorAnimationUsingKeyFrames标签中设置了重复行为但是在storyboard中你设置了Duration="0:0:4"那么动画只会重复4秒
为了明确并添加到答案中,如果实际上想要连续重复,可以将RepeatBehavior
设置为Forever
,例如这里我围绕其中心点旋转矢量。
<Storyboard x:Key="ChaseRotate" RepeatBehavior="Forever">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[2].(RotateTransform.Angle)" Storyboard.TargetName="path">
<EasingDoubleKeyFrame KeyTime="0:0:1" Value="360"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
参见如何:旋转对象- WPF .NET Framework