2010-03-04 109 views
3

以某種方式,我在這裏的圈子裏。請原諒我,如果這個問題的答案是明顯的。WPF:當MVVM綁定屬性發生變化時激活觸發器

我想對視圖中ViewModel中已更改的屬性做出反應。當屬性(布爾)改變視圖應該開始一個動畫(BeginStoryBoard)。 實際上,在我的應用程序中有4個這樣的屬性,每個屬性在虛擬機中都有自己的名稱,每個容器視圖元素都有兩個期望的動畫(隱藏/顯示)。

當直接在各自的容器元素中設置這些觸發器(嘗試DataTrigger/Trigger/EventTrigger)時(它們都是從ContentConrol派生的自定義類型SizerControl)wpf給我提示使用樣式的錯誤。當直接在容器元素中設置樣式時,我得到:「標籤'Style.Triggers'不存在於XML名稱空間中......」 但是,當在全局ResourceDictionary中使用樣式時,我不知道如何綁定到4個容器獲取觸發器的「輸入」值。

你有一個建議如何解決這個從體系結構pov?也許我已經走得太遠,看不到明顯的解決方案。

多謝, Hinnerk

回答

3

您可以用DataTriggerStoryBoard做到這一點。

MSDN有一個完整的示例描述過程,代碼記錄在How to: Trigger an Animation When Data Changes中。

+0

謝謝里德 - 你的建議最終是正確的方法。 其實我以前也嘗試過完全相同的方法,但遇到了以下問題: http://sweux.com/blogs/smoura/index.php/wpf/2009/07/08/playing-storyboards-on -datatriggers-to-animate-a-path/ (一個DataTrigger覆蓋了前一個DataTrigger),所以在我看來,這個錯誤在執行鏈的下面。 上述鏈接中提出的解決方案解決了在鏈接樣式中使用DataTriggers的一般方法。 – Hinnerk 2010-03-04 16:21:31

+0

有記錄的鏈接不再存在。 – midspace 2013-04-24 00:08:02

+0

@midspace固定鏈接。 – 2013-04-24 00:16:29

相關問題