我正在构建WPF应用程序,并试图符合MVVM最佳实践。我正在使用 MVVM基金会 框架,注意到 信使 我阅读的课程应该用于 WPF中的处理对话框. 。这听起来很棒,但是我完全不了解如何将Messenger用于此目的。从字面上看,我要做的就是打开有关对话的模式 - 我不需要来回传递任何消息。

Messenger类的目的是用于对话要求来自父母的消息或向其父母返回消息的情况吗?关于对话的过度杀伤性吗?我会更好地简单地将代码添加到事件处理程序中以显示对话框吗?

有帮助吗?

解决方案

消息传递模式背后的想法与显示对话框无关。这个想法仅仅是为了提供一种脱钩的方式来在视图模型之间进行通信。

您可以利用此基础架构来解决您的问题,但是您必须自己实施对话框的显示。

正如菲利普(Phillip)上面显示的那样,您可以在ViewModels之间发送消息。当您的ViewModel收到消息时,它可以设置其自己的内部属性,例如“ Showdialog”,为true。

然后,您可以具有对此属性更改操作反应并打开对话框的绑定。

我还为MVVM模式构建了一个简单的消息框架,该模式从Josh的想法(以及其他几个现有框架)中借用了您可以阅读的信息 这里

其他提示

假设您有父母视图和对话框视图。在MVVM中,他们都有一个视图模型。很好地将这些视图模型取消是很好的,即它们没有参考。但是他们需要相互交流。 Messenger类充当或调解两个类之间的信息的通信。查看从中获取的代码 乔什的博客.

alt text

这是对象A。这是对调解员的寄存器方法的呼叫:当我收到消息对象助攻时,从调解器中,我将在成员whatobjectsays中缓存。

alt text

这是对象B,它的实现:我将发送一个消息对象辅助。请注意,该对象B对对象A一无所知。可能没有聆听ObjectBSAIDSOMETHITH,或者100个对象侦听Objectbsaids的事物,但是对象B不知道并且不在乎。这是很好的脱钩,这就是为什么调解器模式是一个好主意的原因。这就是MVVM基金会建议在视图模型之间传递信息的方式。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top