12

我有一个自定义用户控件,可以根据DependencyProperty绑定到DataTrigger. 如果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>
4

3 回答 3

42

重复时间的正确语法N是:

<Storyboard RepeatBehavior="Nx">

例如:

<Storyboard RepeatBehavior="6x">
于 2013-06-10T20:51:00.430 回答
1

设置持续时间值也会限制重复行为,因为它优先。因此,如果您在 ColorAnimationUsingKeyFrames 标签上设置了重复行为,但在情节提要上设置了 Duration="0:0:4",那么动画只会重复 4 秒。

于 2014-05-21T13:54:25.123 回答
0

为了清楚起见并添加到答案中,如果一个人真的想连续重复,可以将其设置RepeatBehaviorForever例如这里我围绕其中心点旋转一个向量。

<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中追逐圆圈的完整示例。

于 2021-02-11T20:39:31.140 回答