Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从ViewModel适当地在视图中运行触发器?_C#_Wpf_Mvvm_Eventtrigger_Routedevent - Fatal编程技术网

C# 如何从ViewModel适当地在视图中运行触发器?

C# 如何从ViewModel适当地在视图中运行触发器?,c#,wpf,mvvm,eventtrigger,routedevent,C#,Wpf,Mvvm,Eventtrigger,Routedevent,在ViewModel中引发事件后,我想在我的视图中采取行动。我找到了一个解决办法,但似乎很复杂。没有任何内置的机制吗?我也读过关于在ViewModel中引发RouteEvent的文章,但这种方法要求ViewModel知道接收器的类型——这是否符合MVVM模式 编辑: 更具体地说,我需要从ViewModel运行下面提到的动画: <Page.Resources> <Storyboard x:Key="MyStoryboard"> <DoubleA

在ViewModel中引发事件后,我想在我的视图中采取行动。我找到了一个解决办法,但似乎很复杂。没有任何内置的机制吗?我也读过关于在ViewModel中引发RouteEvent的文章,但这种方法要求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,但它需要RouteEvent。您有什么建议吗?

MVVM允许在ViewModel中引发事件并在视图中捕获它们

请看这里:

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

让我们进一步探讨这个机制

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

现在你需要做同样的事情。让视图询问您希望询问的特定事件,当发现时,只需订阅即可。就这样:)


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

我刚刚在我的问题中添加了一些代码,以使问题更清楚。