代码之家  ›  专栏  ›  技术社区  ›  adrianm

MVVM中介多个实例

  •  1
  • adrianm  · 技术社区  · 15 年前

    有人能解释中介模式如何处理多个实例吗?

    视图中的我的代码:

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

    在视图模型中:

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

    只要视图-视图模型对只有一个实例,就可以找到此工作。

    我如何用多个实例来解决它?

    2 回复  |  直到 15 年前
        1
  •  1
  •   jbe    15 年前

    我使用另一种解决方案。MyView实现了一个包含close方法的接口imyView。MyViewModel对象关联视图,因此它可以通过接口调用Close方法。

    如果您对一个具体的例子感兴趣,那么您可能会看到:

    WPF Application Framework (WAF)

        2
  •  0
  •   Grokys    15 年前

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

    例如:

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

    在视图模型中:

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

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