我是WPF
的新手,并尝试根据DependencyProperty
获取自定义用户控件进行动画制作。我让它绑定到使用DataTrigger
。如果DependencyProperty
等于 Failure ,则应为用户控件中的矩形(名为buttonColor)的填充颜色设置动画。但是出于某种原因,即使我将RepeatBehavior设置为6(或任何其他数字,包括1),它也会永远循环。如果我删除RepeatBehavior属性,它只播放一次动画(如预期的那样)。如果有人可以查看我下面的XAML摘录并告诉我我做错了什么,我将不胜感激。
<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>
答案 0 :(得分:32)
重复N
次的正确语法是:
<Storyboard RepeatBehavior="Nx">
例如:
<Storyboard RepeatBehavior="6x">
答案 1 :(得分:0)
设置持续时间值也会限制重复行为,因为它优先。因此,如果您在ColorAnimationUsingKeyFrames标记上设置了重复行为,但在故事板上设置了持续时间=&#34; 0:0:4&#34;那么动画只会重复4秒钟。
答案 2 :(得分:0)
要清楚并添加到答案中,如果有人真的想连续重复,可以将 RepeatBehavior
设置为 Forever
,例如在这里我围绕其中心点旋转矢量。< /p>
<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>
见How to: Rotate an Object - WPF .NET Framework
Chasing Circles in Xaml 的完整示例。