Подтвердить что ты не робот

Установка 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 "в контексте данных типа" объект ". Любая помощь будет оценена.

4b9b3361

Ответ 1

Вам просто нужно использовать

DataContext="{Binding CustomerViewModel}"

Вы уже установили DataContext = _shellViewModel; в свой конструктор, чтобы установить datacontext всего окна на ShellViewModel, поэтому, когда вы определяете привязку, он ищет путь в определяемом вами datacontext. Таким образом, вышеупомянутое связывание будет искать свойство CustomerViewModel на вашем экземпляре ShellViewModel.