Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.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# WPF如何从MVVM中的子ViewModel调用父ViewModel中的某些逻辑_C#_Wpf_Mvvm_Prism_Prism 4 - Fatal编程技术网

C# WPF如何从MVVM中的子ViewModel调用父ViewModel中的某些逻辑

C# WPF如何从MVVM中的子ViewModel调用父ViewModel中的某些逻辑,c#,wpf,mvvm,prism,prism-4,C#,Wpf,Mvvm,Prism,Prism 4,我用的是棱镜。 我在父视图中有一个选项卡控件。我的选项卡控件中有两个选项卡。每个选项卡都有不同的视图。每个选项卡都有一个按钮,该按钮可能会或可能不会(取决于某些内部逻辑)导致tabcontrol切换到不同的选项卡。建立这样的体系结构的最佳实践是什么 我反对使用EventAggregator,因为我认为它很草率,而且很容易被滥用。 还有别的办法吗?我应该使用RoutedCommand还是events 我还将在选项卡之间共享信息,但我希望它们松散耦合并具有不同的视图模型。有什么想法、建议或批评吗 谢

我用的是棱镜。 我在父视图中有一个选项卡控件。我的选项卡控件中有两个选项卡。每个选项卡都有不同的视图。每个选项卡都有一个按钮,该按钮可能会或可能不会(取决于某些内部逻辑)导致tabcontrol切换到不同的选项卡。建立这样的体系结构的最佳实践是什么

我反对使用EventAggregator,因为我认为它很草率,而且很容易被滥用。 还有别的办法吗?我应该使用RoutedCommand还是events

我还将在选项卡之间共享信息,但我希望它们松散耦合并具有不同的视图模型。有什么想法、建议或批评吗

谢谢!
Brett

我前一段时间写了一篇博客文章,概述了孩子与家长ViewModel通信的一些选项。可能会给你一些想法


不久前,我写了一篇博文,概述了儿童与家长之间视图模型通信的一些选项。可能会给你一些想法


通常,我的第一个偏好是让子视图模型引发事件,让父视图在创建子视图时设置其处理程序


但是有很多方法可以做到这一点。例如,如果所有选项卡切换逻辑都存在于父级中,则可以在父级上创建一个命令,并使用
AncestorType
binding将按钮绑定到该命令。然后,您根本不必接触子视图模型。

通常,我的第一个偏好是让子视图模型引发事件,并且让父视图在创建子视图时设置其处理程序

但是有很多方法可以做到这一点。例如,如果所有选项卡切换逻辑都存在于父级中,则可以在父级上创建一个命令,并使用
AncestorType
binding将按钮绑定到该命令。然后,您根本不必触摸子视图模型