@f_kirill

Как создать новоге окна используя паттерн MVVM, используя существующий ViewModel?

Есть форма PersonsList, где каждый элемент списка - это объект класса PersonViewModel. Собственно вопрос, как вызвать создание новой формы и в качестве DataContext передать ей уже существующий объект класса PersonViewModel в рамках паттерна MVVM?
  • Вопрос задан
  • 268 просмотров
Пригласить эксперта
Ответы на вопрос 1
Nipheris
@Nipheris Куратор тега C#
> PersonsList
советую форму назвать PersonsListWindow.

Потом вам надо создать еще одну вьюмодельку - PersonsListViewModel, которая будет вьюмоделью для ВСЕЙ ФОРМЫ в целом, и у которой будет свойство Persons/PersonViewModels типа IObservableCollection. В этой коллекции у вас будут все вьюмодельки для каждого человека. Тогда вы вашей форме PersonsListWindow должны будете назначить PersonsListViewModel в качестве DataContext, а уже ваш контрол списка (ListView например, или DataGrid, смотря что там у вас) забиндить на свойство Persons/PersonViewModels. Это будет что называется, "по паттерну". Итого:
1) personsListWindow.DataContext = new PersonsListViewModel();
2) в XAMLе контрол-список (его свойство ItemsSource) биндите на свойство PersonViewModels
3) каждый элемент списка автоматически сопоставляется с вьюмоделькой из ObservableCollection.

Если потом на форму добавите еще контролы, то и во вьюмодельку для формы (PersonsListViewModel) сможете добавить еще данные для показа/модификации. Например, захотите в этом списке выбирать ответственного за работу человека - тогда можно сделать в PersonsListViewModel свойство Leader типа PersonViewModel. Или если у вас там будут кнопки Создать/Удалить - то можно выставить соответствущие ICommand-объекты.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы