.net – 我应该如何从ViewModels中生成对话框?

关于MVVM(
WPF)对话框窗口的最佳实践是否有任何共识?我已经看到它通过两种方式接近:

>调解器(EventAggregator,EventBus或任何您喜欢的调用它),它发送“RequestsDialog”消息并等待“DialogProcessed”消息.
>在视图中声明的对话框xaml本身绑定到调用者的视图模型,并通过Command或EventTrigger或类似的东西显示.

我想弄清楚哪种方式更好,我需要一些帮助.

我对#1的关注是(并且一直都是),控制请求范围和回复消息的最佳方法是什么?我的意思是,让我说我的“本地”消息和“全局”应用程序消息由我的中介处理….我如何确保我的ViewModel仍然可以接收全局消息…但同时另一个ViewModel在当前窗口上不会意外地收到用于活动ViewModel的DialogProcessed消息.

采取以下方案:

> 1窗口
> 2个UserControl,每个绑定到独立的ViewModel
> ViewModel1发送RequestConfirmation消息并等待ConfirmationResponse消息
>我还在ViewModel1中接收全局消息(如RequestCloseWindow消息).

如何阻止ViewModel2获取ViewModel1发起的RequestConfirmation消息的ConfirmationResponse消息?

最佳答案 您是否尝试过使用类似于Prism的InteractionRequests的东西?

它们完全涵盖了您所描述的场景.看看this文章.

点赞