2010-04-23 14 views
2

我有一個一直纏着我了一會兒一個問題:WPF 4 ControlStoryboardAction觸發器的行爲是什麼?

我有我調用異步冗長的IO操作,我想我的UI顯示閃爍的文字,告訴用戶該數據被加載。

我有一個IsLoading布爾屬性在我的ViewModel,我用ControlStoryboardAction啓動閃爍的動畫,它設置爲永久重複。對於我的ControlStoryboardAction觸發器,我配置了一個數據觸發器來查看IsLoading是否爲真,並且如果true,則啓動故事板。

我的問題是,當我的IO操作返回時,我設置IsLoading回到false,動畫繼續播放。我認爲一旦觸發條件評估爲false,它會停止動畫?

然後,我添加了第二個ControlStoryboardAction來停止動畫,如果IsLoading評估爲false,但這沒有任何影響。動畫繼續播放後IsLoading是錯誤的。

任何人都可以向我解釋觸發如何在ControlStoryboardAction中工作?在WPF中的正常數據觸發器中,一旦條件評估爲false,該屬性將被設置回原始狀態。看起來WPF行爲中的觸發器不能以相同的方式工作?

回答

0

一般而言,當指定的條件不再爲真時,DataTrigger會將屬性恢復爲其先前的值。

但是,行爲也是如此。假設甚至有這樣的行爲,觸發器無法知道什麼動作會「撤消」觸發動作的效果。

我認爲你想要做的是在相反的條件下定義另一個觸發器(例如,在IsLoading上使用布爾型轉換器,添加IsNotLoading屬性等),運行「Stop」ControlStoryboardAction