2010-02-08 6 views
3

Im essayant d'apprendre MVVM à ce jour son va bien, je trébuche sur une situation que je ne sais pas comment mettre en œuvre ..MVVM plusieurs vues

Ce que je veux: - Une vue à la navigation et à gauche détails volet de droite .. détails à droite auront un contentcontainer qui détiendrait mes contrôles utilisateur pour les vues à sélectionner par volet gauche

Ce que j'ai: - un MainViewModel - ViewModels pour chacune des entités que j'ai sur mon base de données

Mon problème: - Étant donné que j'aurai une ObservableCollection de mes VIEWMODELS dans mon MAINVIEWMODEL (selon l'exemple, je modélise mon application) puis-je créer une propriété publique pour chacune de mes Entités MODEL qui sera utilisée pour la liaison de données que j'ai définie dans mon UserControls ??

Répondre

5

Vous pouvez créer un type de base pour tous vos ViewModels à afficher sur le côté droit. (Appelons que BaseContentViewModel) Ensuite, votre ListBox côté gauche, vous lient à ObservableCollection<BaseContentViewModel> et SelectedValue du ListBox sera lier à un nouveau MainViewModel.SelectedContent proeprty de Type BaseContentViewModel.

Et sur le côté droit que vous devez avoir un ContentControl auquel SelectedContent se lient à ContentControl.Content

Maintenant, il est juste une question de définir différentes UserControls comme DataTemplates dans la ressource XAMLs (En général, fait référence en tant que ViewToViewModelMapping dans MVVM)

2

Jetez un coup d'œil à la discussion PDC de John Papa 'Sujets avancés pour la construction d'applications à grande échelle avec Microsoft Silverlight'. Dans ce document, il illustre une approche pour gérer une application qui a plusieurs triades MVVM.