有人可以解释中介模式如何与多个实例一起工作。
我在视图中的代码:
public MyView() {
Mediator.Register("CloseWindow",()=>Close());
}
在 ViewModel 中:
public SomeMethod() {
Mediator.Notify("CloseWindow");
}
只要只有一个 View - ViewModel 对的实例,就可以找到此方法。
如何通过多个实例解决它?
我使用替代解决方案。MyView 实现了一个包含 Close 方法的接口 IMyView。MyViewModel 对象关联 View,因此它可以通过接口调用 Close 方法。
如果您对具体示例感兴趣,则可以查看:
我不知道您对中介者模式的特定实现是如何工作的,但在我的情况下,您可以发送更多信息而不仅仅是字符串。
例如:
public MyView() {
Mediator.Register<CloseWindowMessage>(message =>
{
if (message.ViewModel == DataContext) Close();
});
}
在 ViewModel 中:
public SomeMethod() {
Mediator.Notify(new CloseWindowMessage(this));
}
在此示例中,ViewModel 将自身作为参数传递给视图。然后视图可以检查消息是否从其视图模型发送。