2010-03-30 51 views
3

我在視圖中有幾個Storyboard,如果可能,我想從ViewModel中觸發。有沒有一個簡單的方法或優雅的方式來做到這一點。這是我想要做的。MVVM-在Silverlight中查看模型中的Trigger Storyboard

人點擊一個按鈕 - > RelayCommand(在ViewModel中),繼電器命令應該播放故事板。另外還有一件事,我想在沒有任何交互的情況下在ViewModel中自己觸發故事板動畫。

<i:Interaction.Triggers> 
<i:EventTrigger EventName="MouseLeftButtonDown"> 
    <cmd:EventToCommand Command="{Binding ButtonPress}"              CommandParameterValue="RedButtonLight"> 
    </cmd:EventToCommand> 
     </i:EventTrigger> 
      </i:Interaction.Triggers> 

回答

1

如果按鈕點擊純粹是驅動一個視圖相關的東西,並沒有做任何實際的應用邏輯,那麼我認爲你可以做到這一切在視圖類的代碼隱藏。

如果不是這種情況,那麼我將使用Presentation(ViewModel)上的屬性來表示演示文稿處於狀態,並使視圖對PropertyChanged事件作出反應並啓動故事板。這假設你正在Presentation類上實現INotifyPropertyChanged。

1

看看expression samples。有一個來自datacontext事件的觸發器。 DataEventTrigger

您可以使用它來觸發ControlStoryboardAction以在您的viewmodel引發特定事件時啓動故事板。

然後,您的viewmodel可以將事件作爲命令的一部分以及其他時間引發。