c#MVVM自定义对话框事件

c#MVVM自定义对话框事件,c#,user-interface,events,mvvm,C#,User Interface,Events,Mvvm,在我的应用程序中,我的每个选项卡都有mainViewModels,这些选项卡是完全分开的。它们通过dialogservice链接到实际的xaml用户控件 然后我有一个OrderVM,它是一个表示订单的viewmodel。它实现onPropertyChanged和自定义验证 如果我更改了一个属性,并且它需要用户输入,那么如何从这个OrderViewModel中恢复显示对话框 首先,我考虑简单地加入对父级mainViewModel或dialogservice本身的引用,但这会将它们紧密地结合在一起,

在我的应用程序中,我的每个选项卡都有mainViewModels,这些选项卡是完全分开的。它们通过dialogservice链接到实际的xaml用户控件

然后我有一个OrderVM,它是一个表示订单的viewmodel。它实现onPropertyChanged和自定义验证

如果我更改了一个属性,并且它需要用户输入,那么如何从这个OrderViewModel中恢复显示对话框

首先,我考虑简单地加入对父级mainViewModel或dialogservice本身的引用,但这会将它们紧密地结合在一起,我无法单独测试我的OrderVM,因为如果没有初始化的dialogservice或没有父级,它将崩溃

我还想过只监听OnPropertyChanged事件,但是所有关于订单的逻辑都在mainViewModel中,而不是在OrderViewModel中。因此,如果我重用OrderVM在应用程序中的其他地方显示/编辑它,那么在两个MainVM中都会有重复的逻辑

我现在做的是在OrderVM中创建一个自定义对话框事件,并在mainVM中侦听它,然后更改arguments对象中的属性以反映用户的选择


这是“正确的”吗?我感觉好一点,但还是不舒服。因为如果没有人在听我的活动,它总是假的。但我永远不能确定有人在听对了吗?

我认为你应该相信在你的情况下什么是正确的,我不能这么做,但有一件事我可以说,使用依赖注入会让你受益匪浅。我认为对话服务的实现隐藏在接口后面,并且该接口可以在视图模型的测试中模拟,因此为您的场景创建使用测试不会带来任何问题,或者我误解了您的问题了吗