Вопрос

Может ли кто-нибудь объяснить, как шаблон посредника работает с несколькими экземплярами.

Мой код в представлении:

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

и в ViewModel:

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

Это работает до тех пор, пока существует только один экземпляр пары View — ViewModel.

Как мне решить эту проблему с несколькими экземплярами?

Это было полезно?

Решение

Я использую альтернативное решение.MyView реализует интерфейс IMyView, который содержит метод Close.Объект MyViewModel связывает представление и поэтому может вызывать метод Close через интерфейс.

Если вас интересует конкретный пример, вы можете посмотреть:

Платформа приложений WPF (WAF)

Другие советы

Я не знаю, как работает ваша конкретная реализация шаблона посредника, но в моей вы можете отправлять больше информации, чем просто строки.

Например:

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

и в ViewModel:

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

В этом примере ViewModel передает себя в качестве параметра представлению.Затем представление может проверить, что сообщение отправляется из его модели представления.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top