MVVM mediador varias instancias
Pregunta
Puede alguien explicar cómo el patrón mediador trabaja con varias instancias.
Mi código en la vista:
public MyView() {
Mediator.Register("CloseWindow",()=>Close());
}
y en el modelo de vista:
public SomeMethod() {
Mediator.Notify("CloseWindow");
}
Esto funciona encontrar, siempre y cuando sólo hay una instancia de la vista -. ViewModel par
¿Cómo lo resuelvo con varias instancias?
Solución
utilizo una solución alternativa. MyView implementa una interfaz de IMyView que contiene el método Close. El objeto MyViewModel asocia la vista y por lo que puede llamar al método Close través de la interfaz.
Si está interesado en un ejemplo concreto entonces es posible echar un vistazo a:
Otros consejos
No sé cómo funciona su aplicación particular del patrón de mediador, pero en la mía pueda enviar más información que sólo cadenas.
Por ejemplo:
public MyView() {
Mediator.Register<CloseWindowMessage>(message =>
{
if (message.ViewModel == DataContext) Close();
});
}
y en el modelo de vista:
public SomeMethod() {
Mediator.Notify(new CloseWindowMessage(this));
}
En este ejemplo, el modelo de vista se hace pasar como un parámetro a la vista. La vista puede entonces verificar que el mensaje está siendo enviado desde su modelo de vista.