有没有办法强制立即完成故事板?

时间:2015-03-27 07:36:06

标签: wpf events animation storyboard code-behind

代码的要点是

    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处理程序立即启动?

1 个答案:

答案 0 :(得分:0)

为避免在另一个ui线程上运行故事板并处理锁定或信号,您可以尝试以下操作:

Action emptyDelegate = delegate() { };
control.Dispatcher.Invoke(DispatcherPriority.Render, emptyDelegate);

...强制渲染渲染,因此在UI的代码隐藏处理期间需要它们时,选择似乎不会触发的已完成事件。

你可能会看到一些文物进入和不存在,但是当然会呈现任何更新的依赖属性值。