2010-04-16 66 views
0

好的我已經看過並搜索了所有我想要做的就是從我的視圖模型中將故事板動畫展開到我的視圖上。問題是,只有太多的樣板代碼才能獲得像myStoryboard.Begin()這樣簡單的東西。射擊。那麼你使用什麼方法?目前,我正在使用Silverlight 3,MVVM Light。Silverlight中的動畫和MVVM

編輯:因爲我的動畫關鍵幀涉及我不能使用類似的視覺狀態管理,我不想再重複他們進入狀態。

回答

0

我通常會欺騙並允許ViewModel通過接口訪問視圖。然後,我可以爲VM中的某些綁定添加代碼隱藏功能,這些功能對於純XAML來說很尷尬。

你也可以在視圖中創建一個DependencyProperty,它綁定到虛擬機上的布爾屬性然後創建一個觸發器引發的動畫時的財產變成真。這仍然需要代碼隱藏中的一些樣板來定義DP,但至少現在Binding引擎仍在執行通信。

+0

我同意Dan的第二個解決方案(視圖上的DependencyProperty)。我不會親自想要允許虛擬機訪問視圖,雖然... – Surfbutler 2010-04-22 19:58:10

+0

我喜歡使用'IParticularView'模式的情況下,通過綁定純屬性驅動的語法是尷尬的。這通常意味着虛擬機想要告訴View執行某些操作,比如啓動一個動畫,彈出一個警告框等等。視圖/虛擬機強烈地耦合,並且通過一個接口抽象它仍然允許將查看測試。 – 2010-04-22 21:54:22