作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 WPF 动画来创建一种效果,当文本属性中的数据发生变化时,文本会淡出,然后再次淡入......或者最好是适当的淡入淡出。
我已经成功完成了一半的工作,下面的代码响应文本更改事件,立即使文本不可见,然后在 3 秒内淡出它。
淡出文本同样简单,我只需更改标签的 From 和 To 属性。但是 - 问题是屏幕上的文字会立即改变。当然,这通常是绝对必需的,但在这种情况下,我希望旧文本淡出,然后新文本淡入。
在 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>
最佳答案
我在这方面与 frances1983 在一起。我要做的是创建一个新的 UserControl,它实际上可以通过淡入淡出无缝地处理旧文本和新文本。
我正在用一个标签做类似的事情,我只想显示几秒钟然后消失。这是我所做的:
<Label Name="lbl" DockPanel.Dock="Bottom" HorizontalAlignment="Center" Visibility="Collapsed">
<Label.Style>
<Style TargetType="{x:Type Label}">
<Style.Triggers>
<Trigger Property="Visibility" Value="Visible">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity" Duration="00:00:00" BeginTime="00:00:00" From="0.0" To="1.0" />
<DoubleAnimation Storyboard.TargetProperty="Opacity" Duration="00:00:03" BeginTime="00:00:02" From="1.0" To="0.0" />
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
</Trigger>
</Style.Triggers>
</Style>
</Label.Style>
Display Text
</Label>
//Make the label visible, starting the storyboard.
lbl.Visibility = Visibility.Visible;
DispatcherTimer t = new DispatcherTimer();
//Set the timer interval to the length of the animation.
t.Interval = new TimeSpan(0, 0, 5);
t.Tick += (EventHandler)delegate(object snd, EventArgs ea)
{
// The animation will be over now, collapse the label.
lbl.Visibility = Visibility.Collapsed;
// Get rid of the timer.
((DispatcherTimer)snd).Stop();
};
t.Start();
关于WPF 文本淡入淡出效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1263001/
我是一名优秀的程序员,十分优秀!