Несколько экземпляров посредника MVVM
Вопрос
Может ли кто-нибудь объяснить, как шаблон посредника работает с несколькими экземплярами.
Мой код в представлении:
public MyView() {
Mediator.Register("CloseWindow",()=>Close());
}
и в ViewModel:
public SomeMethod() {
Mediator.Notify("CloseWindow");
}
Это работает до тех пор, пока существует только один экземпляр пары View — ViewModel.
Как мне решить эту проблему с несколькими экземплярами?
Решение
Я использую альтернативное решение.MyView реализует интерфейс IMyView, который содержит метод Close.Объект MyViewModel связывает представление и поэтому может вызывать метод Close через интерфейс.
Если вас интересует конкретный пример, вы можете посмотреть:
Другие советы
Я не знаю, как работает ваша конкретная реализация шаблона посредника, но в моей вы можете отправлять больше информации, чем просто строки.
Например:
public MyView() {
Mediator.Register<CloseWindowMessage>(message =>
{
if (message.ViewModel == DataContext) Close();
});
}
и в ViewModel:
public SomeMethod() {
Mediator.Notify(new CloseWindowMessage(this));
}
В этом примере ViewModel передает себя в качестве параметра представлению.Затем представление может проверить, что сообщение отправляется из его модели представления.