我正在尝试使用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 事件执行以下操作:
祝你好运 :)