代码的要点是
Storyboard story = new Storyboard();
DoubleAnimation anim = new DoubleAnimation();
anim.Completed += anim_Completed(object sender, EventArgs e);
...
story.Children.Add(anim);
story.Completed += story_Completed(object sender, EventArgs e);
story.Begin(control, true);
return;
我用另一种方法:
// Finish the Storyboard now
story.SkipToFill(control);
// I want it to get back to me here after the Completed events have run.
问题是,在WPF调度程序消息循环的下一次传递之前,Completed事件不会运行,这对我来说是不利的,因为它们会更新某些状态。我也试过
story.Stop(control);
然后完成的处理程序似乎没有运行。有没有办法让Completed处理程序立即启动?
答案 0 :(得分:0)
为避免在另一个ui线程上运行故事板并处理锁定或信号,您可以尝试以下操作:
Action emptyDelegate = delegate() { };
control.Dispatcher.Invoke(DispatcherPriority.Render, emptyDelegate);
...强制渲染渲染,因此在UI的代码隐藏处理期间需要它们时,选择似乎不会触发的已完成事件。
你可能会看到一些文物进入和不存在,但是当然会呈现任何更新的依赖属性值。