2010-04-11 86 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