1

有人可以解释中介模式如何与多个实例一起工作。

我在视图中的代码:

public MyView() {
    Mediator.Register("CloseWindow",()=>Close());
}

在 ViewModel 中:

public SomeMethod() {
    Mediator.Notify("CloseWindow");
}

只要只有一个 View - ViewModel 对的实例,就可以找到此方法。

如何通过多个实例解决它?

4

2 回答 2

1

我使用替代解决方案。MyView 实现了一个包含 Close 方法的接口 IMyView。MyViewModel 对象关联 View,因此它可以通过接口调用 Close 方法。

如果您对具体示例感兴趣,则可以查看:

WPF 应用程序框架 (WAF)

于 2009-11-03T20:51:39.133 回答
0

我不知道您对中介者模式的特定实现是如何工作的,但在我的情况下,您可以发送更多信息而不仅仅是字符串。

例如:

public MyView() {
    Mediator.Register<CloseWindowMessage>(message =>
    {
        if (message.ViewModel == DataContext) Close();
    });
}    

在 ViewModel 中:

public SomeMethod() {
    Mediator.Notify(new CloseWindowMessage(this));
}

在此示例中,ViewModel 将自身作为参数传递给视图。然后视图可以检查消息是否从其视图模型发送。

于 2009-11-03T17:15:12.253 回答