Установка datacontext UserControl в ViewModel, определенную в родительском режиме просмотра
Я пытаюсь создать приложение с использованием шаблона MVVM с вложенными режимами просмотра. Мастер-модель представляет собой ShellView, который содержит три UserControls, каждый со своей собственной моделью просмотра. ShellView ViewModel создается в виде кода таким образом:
public ShellView()
{
InitializeComponent();
_shellViewModel = new ShellViewModel();
DataContext = _shellViewModel;
}
Теперь мой ShellViewModel содержит другие свойства ViewModels в качестве свойств:
public CustomerViewModel CustomerViewModel { get; set; }
public ContactsViewModel ContactsViewModel { get; set; }
Как мне получить доступ к этим свойствам из XAML UserControls? Я хотел бы иметь возможность сделать что-то вроде:
DataContext="<<ParentWindowViewModel>.CustomerViewModel>
Как я могу это сделать? Я уже пробовал:
DataContext="{Binding DataContext.CustomerViewModel, RelativeSource={RelativeSource FindAncestor, AncestorType=Window, AncestorLevel=1}, Path=DataContext.CustomerViewModel}">
но отладчик говорит: "Невозможно разрешить свойство" CustomerViewModel "в контексте данных типа" объект ". Любая помощь будет оценена.
Ответы
Ответ 1
Вам просто нужно использовать
DataContext="{Binding CustomerViewModel}"
Вы уже установили DataContext = _shellViewModel;
в свой конструктор, чтобы установить datacontext всего окна на ShellViewModel
, поэтому, когда вы определяете привязку, он ищет путь в определяемом вами datacontext. Таким образом, вышеупомянутое связывание будет искать свойство CustomerViewModel
на вашем экземпляре ShellViewModel
.