Сценарий MVVM с главным окном и множеством пользовательских элементов управления

У меня есть главное окно и множество пользовательских элементов управления, которые я хочу показать/скрыть в зависимости от выбора пользователя. Например, существует пользовательский элемент управления «Клиент», который должен получить всех клиентов из базы данных, или пользовательский элемент управления, представляющий собой форму для подписки на услугу. И так далее. Каждый из этих элементов управления имеет модель представления, которая должна получать данные из базы данных. Проблема в том, что я не знаю, как правильно настроить контекст данных. Моя модель представляет собой модель данных объекта ado.net для простоты.

Я пытался:

<UserControl.DataContext>
<vm:CustomerViewModel/>
</UserControl.DataContext>

И я привязываю поля к полям модели, но данные не видны. Прежде чем я использовал методы в MainWindowViewModel и установил модель представления в представление в App.xaml.cs и вызвал метод:

Views.MainWindow newMainV = new Views.MainWindow();
ViewModels.MainVM mainVM = new ViewModels.MainVM();
mainVM.LoadCustomers();
newMainV.DataContext = mainVM;
newMainV.Show();

Но я думал, что главное окно должно иметь свою собственную модель просмотра, которая будет обрабатывать только команды, и каждый пользовательский элемент управления должен иметь свою собственную модель просмотра, которая будет получать необходимые данные.

Что не так с моим подходом?

Спасибо за любую помощь.


person EVA    schedule 06.05.2010    source источник


Ответы (2)


В принципе, нет ничего плохого в том, чтобы установить DataContext на UserControl так, как вы описали. Поэтому я подозреваю, что что-то не так в том, как настроена ваша привязка или как работает конструктор вашей модели представления. Вы должны искать в окне вывода ошибки привязки и ставить точку останова в конструкторе, чтобы увидеть, что на самом деле происходит, когда создается экземпляр вашего UserControl.

person Robert Rossney    schedule 06.05.2010

Вы можете ознакомиться с образцом приложения BookLibrary для WPF Application Framework (WAF).

Этот образец приложения MVVM также использует модели данных Entity Framework и состоит из различных представлений (UserControls).

person jbe    schedule 07.05.2010