Réglage datacontext de UserControl à ViewModel défini dans le parent viewmodel
Je suis en train de créer une application utilisant le pattern MVVM avec imbriquée viewmodel. Le maître viewmodel est ShellView qui contient trois UserControls, chacun avec leur propre viewmodel. Le ShellView ViewModel est créé dans le code-behind de la sorte:
public ShellView()
{
InitializeComponent();
_shellViewModel = new ShellViewModel();
DataContext = _shellViewModel;
}
Maintenant, mon ShellViewModel contient les autres Viewmodel en tant que propriétés:
public CustomerViewModel CustomerViewModel { get; set; }
public ContactsViewModel ContactsViewModel { get; set; }
Comment puis-je accéder à ces propriétés dans le code XAML de la UserControls? Je voudrais être en mesure de faire quelque chose comme:
DataContext="<<ParentWindowViewModel>.CustomerViewModel>
Comment puis-je accomplir? J'ai déjà essayé:
DataContext="{Binding DataContext.CustomerViewModel, RelativeSource={RelativeSource FindAncestor, AncestorType=Window, AncestorLevel=1}, Path=DataContext.CustomerViewModel}">
mais le débogueur dit "Impossible de résoudre des problèmes de propriété CustomerViewModel" dans le contexte de données de type "objet". Toute aide serait appréciée.
OriginalL'auteur ZymLink | 2012-12-06
Vous devez vous connecter pour publier un commentaire.
Vous devez simplement utiliser
Vous avez déjà mis en
DataContext = _shellViewModel;
dans votre constructeur, de sorte que les définit le datacontext de l'ensemble de la fenêtre deShellViewModel
, de sorte que lorsque vous définissez une liaison, il semble pour le chemin d'accès dans le datacontext que vous avez défini. C'est pourquoi au-dessus de la liaison va chercher laCustomerViewModel
bien sur votreShellViewModel
instance.OriginalL'auteur Adi Lester