所以我有一个Storyboard
它将依次运行多个动画(并非所有动画同时运行),并且在其中一些动画中我订阅了DoubleAnimation.Completed
事件。动画运行得很好,但是Completed
动画的事件仅在整个事件触发一次Storyboard
完成后,而不是单个动画完成时(BeginTime
下一个动画)。例如:
Storyboard storyboard = new Storyboard();
DoubleAnimation hideAnimation = new DoubleAnimation();
hideAnimation.Duration = TimeSpan.FromSeconds(0.5);
hideAnimation.BeginTime = TimeSpan.FromSeconds(0);
hideAnimation.From = 1.0;
hideAnimation.To = 0.0;
hideAnimation.Completed += new EventHandler(HideAnimation_Completed);
Storyboard.SetTarget(hideAnimation, grid1);
Storyboard.SetTargetProperty(hideAnimation, new PropertyPath(Grid.OpacityProperty));
DoubleAnimation showAnimation = new DoubleAnimation();
showAnimation.Duration = TimeSpan.FromSeconds(0.5);
showAnimation.BeginTime = TimeSpan.FromSeconds(0.5);
showAnimation.From = 1.0;
showAnimation.To = 0.0;
showAnimation.Completed += new EventHandler(ShowAnimation_Completed);
Storyboard.SetTarget(showAnimation, grid2);
Storyboard.SetTargetProperty(showAnimation, new PropertyPath(Grid.OpacityProperty));
storyboard.Children.Add(hideAnimation);
storyboard.Children.Add(showAnimation);
storyboard.Begin();
在这个例子中HideAnimation_Completed
将在 1 秒后调用(总持续时间storyboard
) 之后HideAnimation_Completed
已经完成了,ShowAnimation_Completed
叫做。
是在期待着HideAnimation_Completed
0.5 秒后调用并且ShowAnimation_Completed
1 秒后,而不是两者都在 1 秒后。
那些人知道这是否是 WPF 的预期行为,还是我错过了什么?
注意:前面的代码只是解释我遇到的问题的示例。在我的真实程序中,我有多个动态生成的动画并添加到全局中Storyboard
在班级的不同部分。因此,在前一个动画结束时开始每个动画的想法是使用Completed
事件和UIElement.BeginAnimation
方法,是我的最后一个资源,因为这将涉及修改相当多的代码(并且它可能会对我的应用程序的性能产生很大的影响)。
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)