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?

È stato utile?

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:

WPF Application Framework (WAF)

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top