![]() |
1
5
消息模式背后的想法与显示对话框没有任何特别的关系。其思想只是提供一种在视图模型之间进行通信的分离方式。 您可以利用这个基础结构来解决您的问题,但是您必须自己实现对话框的显示。 如上面Phillip所示,您可以在视图模型之间发送消息。当您的ViewModel收到消息时,它可以将自己的内部属性设置为true,比如说“ShowDialog”。 然后,您可以有一个绑定,它对这个属性更改操作做出反应,并打开一个对话框。 我还为MVVM模式构建了一个简单的消息传递框架,它借用了Josh的想法(以及其他几个现有框架),您可以阅读到它。 here |
![]() |
2
3
假设您有一个父视图和一个对话框视图。在MVVM中,它们都有一个视图模型。保持这些视图模型的分离是很好的,也就是说,它们没有彼此的引用。但他们需要相互沟通。messenger类充当中间人或中介人来调解两个类之间的信息通信。查看代码取自 Josh's blog .
这里是对象A。它调用中介的register方法实现:当我从中介接收到消息objectbsaidsomething时,我将把它缓存在成员whatobjectbsays中。
这里是对象B,它实现了:我将发送消息objectbsaidsomething。注意,对象B对对象A一无所知。可能没有任何对象监听ObjectBSAIDSometing,或者有100个对象监听ObjectBSAIDSometing,但对象B不知道也不关心。这是很好的去耦,这就是为什么中介模式是一个好主意。这就是MVVM基金会建议在视图模型之间传递信息的方式。 |