在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/