在ViewModel中引发事件后,我想在View中采取措施。我找到了一个解决方案here,但似乎很复杂。没有内置机制吗?我也读过有关在ViewModel中引发RoutedEvent的信息,但是这种方法要求ViewModel知道接收者的类型-是否与MVVM模式相对应?

编辑:

更具体地说,我需要从ViewModel运行下面提到的动画:

<Page.Resources>
    <Storyboard x:Key="MyStoryboard">
        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="MyTextBlock">
            <EasingDoubleKeyFrame KeyTime="0:0:1" Value="1"/>
        </DoubleAnimationUsingKeyFrames>
    </Storyboard>
</Page.Resources>

最初,我想出了在page.triggers中定义eventTrigger的方法,但是它需要routedEvent。你有什么建议吗?

最佳答案

MVVM允许在ViewModel中引发事件并在View中捕获事件。

在这里看一下:

http://msdn.microsoft.com/en-us/library/gg405484%28v=pandp.40%29.aspx

对于在ViewModel中引发并被View捕获的事件,最好的例子是一个唯一的INotifyPropertyChanged事件。

让我们进一步探讨该机制。

View 询问数据是否实现了INotifyPropertyChanged接口(interface)。如果是这样,则 View 订阅PropertyChanged事件。

现在,您需要执行相同的操作。使View询问您想要询问的特定事件,找到后只需订阅它。而已 :)

顺便说一句,如果您希望我们提供代码支持,请首先提供代码。

关于c# - 如何适本地在ViewModel中的View中运行触发器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20411313/

10-10 23:27