即使使用RepeatBehavior =“6”,WPF Storyboard动画也会永远循环

时间:2013-06-10 20:38:33

标签: wpf xaml

我是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>

3 个答案:

答案 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 的完整示例。