我希望在ViewModel中提升事件后在我的视图中执行操作。我找到了一个解决方案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。你有什么建议吗?
答案 0 :(得分:0)
在MVVM中允许在ViewModel中引发事件并在View中捕获它们。
在这里看一下:
http://msdn.microsoft.com/en-us/library/gg405484%28v=pandp.40%29.aspx
在ViewModel中引发并被View捕获的事件的最佳示例是唯一的INotifyPropertyChanged事件。
让我们进一步了解这一机制。
View会询问数据是否已实现INotifyPropertyChanged接口。如果是,则View订阅PropertyChanged事件。
现在你需要做同样的事情。让视图询问您想要询问的特定事件,并在发现时简单地订阅它。多数民众赞成:)
不过,如果您希望我们提供代码帮助,请先提供代码。