2009-01-25 10 views
1

J'écris une application Silverlight en utilisant le modèle MVVM. J'ai une vue principale (UserList.xaml) et vm correspondant (UserListViewModel.cs). Ceci est utilisé pour lister une collection d'utilisateurs. J'ai également un UserControl (User.xaml - invoqué comme une boîte de dialogue modale) qui est utilisé pour ajouter des détails pour un nouvel utilisateur. Cela a aussi un modèle de vue de lui-même (UserViewModel.cs).Silverlight et plusieurs viewmodels

Mes questions est de savoir comment transmettre des informations (un objet utilisateur) du modèle de vue enfant au parent une fois que la vue enfant est fermée? J'ai besoin de mettre à jour la collection dans le viewmodel parent quand je fais une sauvegarde sur le viewmodel enfant. Devrait être assez simple mais le modèle de vue parent n'a aucune idée quand l'enfant est renvoyé. Même si la propriété UserViewModel.User est modifiée et son événement PropertyChanged est déclenché, UserListViewModel n'en est pas conscient.

Toute aide est grandement appréciée. J'ai tout lu sur mvvm dans Silverlight que je peux trouver mais il y a encore quelques lacunes. J'espère avoir clairement défini mon problème.

Répondre

3

Il y a plusieurs façons de le faire. Vous pouvez passer une instance de la machine virtuelle parente à la machine virtuelle enfant dans le constructeur. Vous pouvez faire en sorte que la machine virtuelle parente s'abonne à un événement que la machine virtuelle enfant expose lorsque votre code a été exécuté.

Espérons que cela aide. :)

+0

Merci - c'est un cas de sur-analyse. J'essayais tellement de penser à ce problème dans un état d'esprit MVVM que j'ai simplement ignoré l'idée de créer un événement que la VM mère écoute. J'apprécie l'échouement. Cordialement, AV –