WPF故事板动画设置后仍然无限循环

14

我有一个自定义用户控件,它基于绑定到DataTriggerDependencyProperty进行动画。如果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>
3个回答

43

重复N次的正确语法是:

<Storyboard RepeatBehavior="Nx">
例如:
<Storyboard RepeatBehavior="6x">

2
啊,谢谢,这解决了我的问题。但要注意必须是小写的 'x'。 - AXG1010

1
设置持续时间值也会限制重复行为,因为它具有优先权。因此,如果您在ColorAnimationUsingKeyFrames标记上设置了重复行为,但在故事板上设置了Duration="0:0:4",则动画只会重复4秒钟。

-1
要清楚并补充答案,如果想要持续重复,可以将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中旋转对象

Xaml中追逐圆的完整示例


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接