动画以使颜色闪烁并返回其原始颜色

时间:2018-07-13 12:59:35

标签: c# wpf animation storyboard

我正在使用C#和.NET Framework 4.7开发WPF应用程序。

我有这个动画:

<Style.Triggers>
    <EventTrigger RoutedEvent="ContentChanged">
        <EventTrigger.Actions>
            <BeginStoryboard>
                <Storyboard>
                    <ColorAnimation Duration="0:0:0.1" Storyboard.TargetProperty="(Label.Background).(SolidColorBrush.Color)" 
                                To="Yellow" AutoReverse="True" />
                </Storyboard>
            </BeginStoryboard>
        </EventTrigger.Actions>
    </EventTrigger>
</Style.Triggers>
</Style>

我试图将背景色更改为黄色,然后再次变回白色,但我认为AutoReverse并不意味着那样。

我也尝试过:

<BeginStoryboard>
    <Storyboard>
        <ColorAnimation Storyboard.TargetProperty="(Label.Background).(SolidColorBrush.Color)" 
                To="Yellow" FillBehavior="Stop" BeginTime="0:0:0" Duration="0:0:0.3"/>
        <ColorAnimation Storyboard.TargetProperty="(Label.Background).(SolidColorBrush.Color)"
                    From="Yellow" To="White"
                    BeginTime="0:0:0.3" Duration="0:0:1"/>
    </Storyboard>
</BeginStoryboard>

但是最后,背景颜色是黄色。

我要实现的效果是在Label的内容更改时更改背景颜色,然后快速恢复其原始颜色。我想创建一种视觉效果,以注意到哪个标签更改了其内容。

如何将颜色更改为黄色,然后再次将其更改为白色?

1 个答案:

答案 0 :(得分:0)

ColorAnimation添加另一个Storyboard并将其BeginTime属性设置为大于或等于第一个Duration的值,例如:

<EventTrigger RoutedEvent="ContentChanged">
    <EventTrigger.Actions>
        <BeginStoryboard>
            <Storyboard>
                <ColorAnimation BeginTime="0:0:0" Duration="0:0:1" 
                                Storyboard.TargetProperty="(Label.Background).(SolidColorBrush.Color)" 
                                To="Yellow"/>
                <ColorAnimation BeginTime="0:0:1" Duration="0:0:1" 
                                Storyboard.TargetProperty="(Label.Background).(SolidColorBrush.Color)" 
                                To="White"/>
            </Storyboard>
        </BeginStoryboard>
    </EventTrigger.Actions>
</EventTrigger>