2010-04-11 52 views
1

给定一个WPF窗口(可能有或没有动画),我想等待它们全部完成后再继续处理。有没有一种通用的方法来做到这一点。目前我可以做这样的事情:等待所有WPF动画停止

void WaitForAnimation(Storyboard storyboard) 
{ 
    WaitUntil(() => storyboard.GetCurrentState() == ClockState.Stopped); 
} 

但是这个假设我知道故事板或有某种方法找到它们。有没有办法做到这一点?

回答

1

建议使用Storyboard.Completed事件来查找每个故事板的完成情况。

+0

是的,但你如何获得所有相关的故事板? – Ray 2010-04-11 19:19:47

+0

gud问题。让我搜索,如果我得到一些有用的东西,我会让你知道。如果你有东西,请更新我。 – 2010-04-12 03:48:19

0

为什么不只是给你的故事板一个x:Name,并把它们放到代码隐藏的集合中?你有多少人?

+0

这是一个非常普遍的问题。我只是给了一个窗口。我不知道会有多少个故事板 - 如果有的话。 – Ray 2010-04-12 06:58:21

+0

那很复杂。从窗口继承的类可能会在代码隐藏中创建作为私有属性或本地变量的故事板。它甚至可以在没有故事板的情况下生成动画。为了在基类中获得对动画更全面的控制,您必须执行一些合约。例如:仅使用故事板作为资源进行动画制作 - 然后使用FindResource在代码中检索所有故事板并检查它们的状态很容易。 – majocha 2010-04-12 16:53:14