如何从ViewModel中适当地运行View中的触发器?

时间:2013-12-05 21:38:52

标签: c# wpf mvvm eventtrigger routedevent

我希望在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。你有什么建议吗?

1 个答案:

答案 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事件。

现在你需要做同样的事情。让视图询问您想要询问的特定事件,并在发现时简单地订阅它。多数民众赞成:)

不过,如果您希望我们提供代码帮助,请先提供代码。