2010-03-30 27 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可以将事件作为命令的一部分以及其他时间引发。