【问题标题】:WPF Stopping ColorAnimation using RepeatBehaviorWPF 使用 RepeatBehavior 停止 ColorAnimation
【发布时间】:2013-10-15 12:42:36
【问题描述】:

我在停止动画时遇到了一些问题,它会一直持续下去。我认为 RepeatBehavior 应该控制它,但它似乎不起作用。

<Grid.Style>
    <Style TargetType="Grid">
        <Style.Triggers>
            <DataTrigger Binding="{Binding IsNew}" Value="true">
                <DataTrigger.EnterActions>
                    <BeginStoryboard>
                        <Storyboard>
                            <ColorAnimation RepeatBehavior="1"
                                Storyboard.TargetProperty="Background.(SolidColorBrush.Color)"
                                To="LightGreen" Duration="0:0:0.25" AutoReverse="True" >
                            </ColorAnimation>
                        </Storyboard>
                    </BeginStoryboard>
                </DataTrigger.EnterActions>
            </DataTrigger>
            <DataTrigger Binding="{Binding IsNew}" Value="false">
                <Setter Property="Background" Value="WhiteSmoke"></Setter>
            </DataTrigger>
        </Style.Triggers>
    </Style>
</Grid.Style>

【问题讨论】:

    标签: wpf animation


    【解决方案1】:

    解决方案是使用

    RepeatBehavior="1x"
    

    所以 1x 不只是 1,对我来说不是很合乎逻辑,但可能是有原因的..

    更新(在@clemens 输入之后):

    根据 MSDN,XAML 属性用法是:

    <object property="iterationCountx"/>
    - or -
    <object property="[days.]hours:minutes:seconds[.fractionalSeconds]"/>
    - or -
    <object property="[days.]hours:minutes"/>
    - or -
    <object property="days"/>
    - or -
    <object property="Forever"/>
    

    这更有意义,但不是很直观..

    <Grid.Style>
        <Style TargetType="Grid">
            <Style.Triggers>
                <DataTrigger Binding="{Binding IsNew}" Value="true">
                    <DataTrigger.EnterActions>
                        <BeginStoryboard>
                            <Storyboard>
                                <ColorAnimation RepeatBehavior="1x"
                                    Storyboard.TargetProperty="Background.(SolidColorBrush.Color)"
                                    To="LightGreen" Duration="0:0:0.25" AutoReverse="True" >
                                </ColorAnimation>
                            </Storyboard>
                        </BeginStoryboard>
                    </DataTrigger.EnterActions>
                </DataTrigger>
                <DataTrigger Binding="{Binding IsNew}" Value="false">
                    <Setter Property="Background" Value="WhiteSmoke"></Setter>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Grid.Style>
    

    【讨论】:

    • 原因很简单:RepeatBehavior="1" 指定一天,而RepeatBehavior="1x" 指定一次。你可能想看看RepeatBehavior documentation on MSDN
    • @Clemens 感谢您的意见。我更新了我的答案并包含了 MSDN 代码。
    猜你喜欢
    • 2012-06-24
    • 2021-11-14
    • 2011-01-15
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-28
    相关资源
    最近更新 更多