MVVM - 在Silverlight中的视图模型中触发Storyboard

3

我在视图中有几个Storyboard,如果可能的话,我希望能够从ViewModel中触发它们。有没有简单或优雅的方法可以做到这一点。这就是我想要做的。

人点击一个按钮 -> RelayCommand(在ViewModel中),RelayCommand然后应该播放Storyboard。还有一件事,我也想在ViewModel中触发Storyboard动画而不需要任何交互。

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

5

在ei:ControlStoryboardAction中添加ControlStoryboardProperty="Play"后,代码对我有效。 <ei:ControlStoryboardAction ControlStoryboardProperty="Play" x:Name="FadeOutOnLogin" Storyboard="{StaticResource LoginFadeOut}"/> - robertk

1
如果按钮点击纯粹是为了驱动与视图相关的事情,并且没有执行任何实际的应用逻辑,那么我认为您可以在视图类的代码后台中完成所有这些操作。
如果不是这种情况,那么我会使用 Presentation(ViewModel)上的属性来表示 Presentation 处于某种状态,并让视图对 PropertyChanged 事件做出反应并启动故事板。这是在您的 Presentation 类上实现 INotifyPropertyChanged 的前提下。

1

请查看表达式示例。数据上下文中有一个事件触发器。DataEventTrigger

您可以使用它来触发ControlStoryboardAction,以便在视图模型引发特定事件时启动故事板。

您的视图模型可以在命令的一部分以及其他时间引发事件。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接