WPF StoryBoard.Completed事件未触发

21

我在关闭主窗口之前有一个动画,就像下面的代码所示。问题是StoryBoard.Completed没有触发。有什么线索可以解决这个问题吗?

代码

DoubleAnimation dblAnimX = new DoubleAnimation(1.0, 0.0, new  Duration(TimeSpan.FromSeconds(0.5)));
dblAnimX.SetValue(Storyboard.TargetProperty, this);

DoubleAnimation dblAnimY = new DoubleAnimation(1.0, 0.0, new Duration(TimeSpan.FromSeconds(0.5)));
dblAnimY.SetValue(Storyboard.TargetProperty, this);

Storyboard story = new Storyboard();
Storyboard.SetTarget(dblAnimX, this);
Storyboard.SetTarget(dblAnimY, this);
Storyboard.SetTargetProperty(dblAnimX, new PropertyPath("RenderTransform.ScaleX"));
Storyboard.SetTargetProperty(dblAnimY, new PropertyPath("RenderTransform.ScaleY"));

story.Children.Add(dblAnimX);
story.Children.Add(dblAnimY);
story.Begin(this);

story.Completed += (o, s) => { this.Close(); };

这个回答解决了你的问题吗?C#故事板动画不会重置位置 - Rao Arman
1个回答

59
在调用Begin之前添加Completed处理程序:
story.Completed += (o, s) => Close();
story.Begin(this);
这种行为的原因是"Completed"处理程序附加到在Begin期间创建的内部Clock对象。请参见Completed中的备注部分:

尽管此事件处理程序似乎与时间轴相关联,但实际上它是向为此时间轴创建的时钟注册的。有关更多信息,请参见计时事件概述。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接