WPF文本淡出然后生效

6 wpf animation text

我正在尝试使用WPF动画创建一种效果,当文本属性中的数据发生变化时,文本会淡出,然后再次出现..或者最好是正确的交叉渐变.

我已成功完成了一半的工作,下面的代码响应文本更改事件,立即使文本不可见,然后在3秒内淡化它.

淡出文本同样简单,我只需更改标记的From和To属性.但是 - 问题是屏幕上的文字立即改变了.当然,这通常是绝对必需的,但在这种情况下,我希望OLD文本淡出,然后新文本淡入.

在WPF动画中有没有聪明的诀窍呢?

目前的半成品触发器:

<Style TargetType="TextBlock" x:Key="fadeinout">
        <Style.Triggers>
            <EventTrigger RoutedEvent="Binding.TargetUpdated">
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation Storyboard.TargetProperty="Opacity" Duration="0:0:3" From="0.0" To="1.0" BeginTime="0:0:0" />
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
        </Style.Triggers>
    </Style>
Run Code Online (Sandbox Code Playgroud)

use*_*889 -2

我认为这不可能出现在纯 XAML 解决方案中。TextBlock 不知道“旧”和“新”文本,只知道文本。

我执行此操作的方法是创建一个派生自 TextBlock 的自定义控件,并对 TargetUpdated 事件执行以下操作:

  • 调用“淡出”故事板
  • 更改文本
  • 调用“淡入”故事板

祝你好运 :)