1

在 ViewModel 中引发事件后,我想在我的视图中执行操作。我在这里找到了解决方案,但似乎很复杂。没有内置机制吗?我还阅读了有关在 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。你有什么建议吗?

4

1 回答 1

0

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

看看这里:

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

在 ViewModel 中引发并被 View 捕获的事件的最佳示例是唯一的 INotifyPropertyChanged 事件。

让我们更深入地了解该机制。

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

现在你需要做同样的事情。让视图询问您希望询问的特定事件,并在找到时简单地订阅它。而已 :)

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

于 2013-12-06T08:46:18.487 回答