在故事板

时间:2016-09-19 08:29:53

标签: c# wpf animation

所以我有一个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();

在此示例中,{1}}将在1秒后调用(HideAnimation_Completed的总持续时间),storyboard完成后,HideAnimation_Completed将被调用。

预计在{0.5}后会调用ShowAnimation_Completed,在1秒后调用HideAnimation_Completed,而不是在1秒后调用。{/ p>

有人知道这是WPF的预期行为还是我错过了什么?

注意:前面的代码只是一个例子来解释我遇到的问题。在我的真实程序中,我有多个动画,这些动画是动态生成的,并在类的不同部分添加到全局ShowAnimation_Completed中。因此,使用Storyboard事件和Completed方法在前一个动画结束时启动每个动画的想法是我的最后一个资源,因为这将涉及修改我的很多代码(并且它可能会对我的应用程序的性能产生很大影响。)

0 个答案:

没有答案