MVVM mediatore più istanze
Domanda
Qualcuno può spiegare come il modello di mediatore lavora con più istanze.
Il mio codice nella vista:
public MyView() {
Mediator.Register("CloseWindow",()=>Close());
}
e nel ViewModel:
public SomeMethod() {
Mediator.Notify("CloseWindow");
}
Questo funziona trovare fintanto che non v'è una sola istanza della vista -. ViewModel coppia
Come posso risolvere con più istanze?
Soluzione
Io uso una soluzione alternativa. MyView implementa un IMyView interfaccia che contiene il metodo Close. L'oggetto MyViewModel associa la vista e quindi può chiamare il metodo Close attraverso l'interfaccia.
Se siete interessati a un esempio concreto, allora si potrebbe avere uno sguardo a:
Altri suggerimenti
Non so come il vostro particolare implementazione del pattern mediatore funziona, ma nella mia posso ricevere maggiori informazioni che semplici stringhe.
Ad esempio:
public MyView() {
Mediator.Register<CloseWindowMessage>(message =>
{
if (message.ViewModel == DataContext) Close();
});
}
e nel ViewModel:
public SomeMethod() {
Mediator.Notify(new CloseWindowMessage(this));
}
In questo esempio, il ViewModel si passa come parametro alla vista. La visualizzazione può quindi verificare che il messaggio è stato inviato dal suo modello di visualizzazione.