Médiateur plusieurs instances MVVM
Question
Quelqu'un peut-il expliquer comment fonctionne avec plusieurs cas, le modèle de médiateur.
Mon code dans la vue:
public MyView() {
Mediator.Register("CloseWindow",()=>Close());
}
et dans le ViewModel:
public SomeMethod() {
Mediator.Notify("CloseWindow");
}
Cela fonctionne trouver tant qu'il n'y a qu'une seule instance de la vue -. Paire ViewModel
Comment puis-je résoudre avec plusieurs instances?
La solution
J'utilise une solution de rechange. MyView implémente une IMyView d'interface qui contient la méthode Close. L'objet MyViewModel associe la vue et il peut appeler ainsi la méthode Close via l'interface.
Si vous êtes intéressé par un exemple concret, alors vous pourriez jeter un oeil à:
Autres conseils
Je ne sais pas comment votre implémentation particulière du modèle de médiateur travaille, mais dans le mien, vous pouvez envoyer plus d'informations que des chaînes.
Par exemple:
public MyView() {
Mediator.Register<CloseWindowMessage>(message =>
{
if (message.ViewModel == DataContext) Close();
});
}
et dans le ViewModel:
public SomeMethod() {
Mediator.Notify(new CloseWindowMessage(this));
}
Dans cet exemple, le ViewModel se passe comme paramètre à la vue. La vue peut alors vérifier que le message est envoyé par son modèle de vue.