Dans mon ViewmodelA
je veux ouvrir une nouvelle fenêtre dans ViewModelB
, donc je l'ai utilisé la classe messager, mais le Probleme est que je dois faire référence ViewModelB
à l'intérieur du ViewModelA
, de sorte que ViewModelB
peut écoutez les messages.
ici est ma mise en œuvre
dans ViewModelA:
MVVM messager de la lumière, la communication entre viewmodels
private void btnAddExecute()
{
// I need to instanciate ViewModelB otherwise it wont work/listen
ViewModelB vb= new ViewModelB();
Messenger.Default.Send(new NotificationMessage("ShowWindow"));
}
dans ViewModelB
i écouter les messages diffusés dans son constructeur.
est-il de toute façon découpler ViewmodelA
de ViewmodelB
?
Pouvez-vous expliquer pourquoi vous avez besoin de référencer 'ViewModelB'? Attendez-vous un résultat ou quelque chose? – MrZander
Je veux juste expérimenter avec la classe messenger, et envoyer des données entre viewmodels –
Parce que vous avez enregistré le gestionnaire de message dans le constrcutor de B, et le gérer là, vous avez besoin d'une instance de 'ViewModelB' quelque part pour gérer réellement le message. Généralement cette instance serait créée ailleurs dans le cadre de votre application (deux fenêtres par exemple, essayant de communiquer entre elles). –