WPF故事板.已完成事件未触发

本文关键字:事件 已完成 故事 WPF | 更新日期: 2023-09-27 17:50:47

在关闭主窗口之前有一个动画,如下面的代码所示。问题是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(); };

WPF故事板.已完成事件未触发

在调用Begin之前添加Completed处理程序:

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

出现这种行为的原因是Completed处理程序被附加到一个在Begin期间创建的内部Clock对象。请参阅已完成:

中的备注部分

虽然此事件处理程序似乎与时间轴相关联,它实际上注册为这个时间轴创建的时钟。为更多信息,请参见定时事件概述。