WPF MVVM communication entre le Modèle de Vue
Je suis en train de travailler sur WPF MVVM demande où j'ai 2 points de vue Vue1 et Vue2 avec leurs Viewmodel. Maintenant, je veux sur le clic d'un bouton dans Vue1 serait de fermer Vue1 et ouvrez à l'aide de Vue2 ViewModel1.
Aussi, je tiens à transmettre certaines données-dire une instance de la classe personne à ViewModel2 lors de l'ouverture de ViewModel1 qui serait utilisé pour afficher des informations dans Vue2.
Quel est le meilleur et, éventuellement, de la façon la plus simple pour atteindre cet intérieur Viewmodel seulement, je voudrais éviter d'écrire du code pour la navigation dans le code derrière.
OriginalL'auteur user1662008 | 2014-05-22
Vous devez vous connecter pour publier un commentaire.
Comment sur l'utilisation du Médiateur de modèle (voir, par exemple, technical-recipes.com ou John Smith) ou de la faiblesse des événements? Autant que je sache, plusieurs frameworks MVVM /libs (comme le PRISME, Caliburn.Micro, MVVMCross) déjà venu avec le code d'infrastructure pour ces.
Il y a aussi des bibliothèques distinctes qui sont indépendantes de tout spécifique mvvm cadre, à l'instar Appccelerate EventBroker qui peuvent vous aider à atteindre quelque chose le long des lignes de ce que vous voulez.
Avec les événements, cependant, je me demande si vous avez besoin de certains des commentaires si l'événement a été "correctement" manipulé ou non. Il y a des moyens pour y parvenir (en modifiant la valeur de l'événement args, la gestion des événements de synchronisation, après la levée de l'événement, la vérification de la valeur de l'événement args), mais ils ne sont pas aussi concis que de retour de la méthode de la valeur ou une méthode lance une exception.
EDIT: désolé je viens de réaliser que le second point de vue/viewmodel n'est pas ouvert, encore. Donc ma "solution" n'est pas (simplement) applicables. Vous avez besoin de passer l'instruction "haut" dans le modèle de vue de l'arbre, peut-être même à la racine, où vous pouvez instancier et de montrer le nouveau modèle de vue (afficher dans une nouvelle fenêtre ou un ContentControl dans une vue existante?)
OriginalL'auteur BatteryBackupUnit
J'ai créé ce
Messenger
classe permettant de gérer la communication entre les ViewModels.Inscrire pour un objet personne dans
MainViewModel
:De notifier à tous les inscrits Viewmodel sur la personne ajoutée à partir de la
CreatePersonViewModel
:Code Source:
pouvez-vous partager cette MessengerKey l'extension que vous avez créé?
oui, bien sûr. J'ai fait un dépôt github: github.com/Yeah69/MessengerPattern
C'est en travaillant avec brio! Juste une petite question, comment puis-je utiliser le Registre lorsque la méthode ne prend pas d'arguments ?
private void MyMethod()
OriginalL'auteur Dalstroem
Utiliser une petite dédié La Lumière Bus De Message. Ce n'est pas une partie de tout MVVM cadre, on peut donc l'utiliser de façon indépendante. Très facile à installer et à utiliser.
Directives d'utilisation
OriginalL'auteur AnjumSKhan