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

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

Я пытался:

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

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

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

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

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

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

Ответы [ 2 ]

1 голос
/ 06 мая 2010

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

0 голосов
/ 08 мая 2010

Вы можете взглянуть на пример приложения BookLibrary WPF Application Framework (WAF) .

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...