Я довольно новый для MVVM и у меня есть несколько вопросов:MVVM вопросы: определение модели, оберточная модели объекты и модальный диалог
является модель = бизнес-слой?
Если у меня есть модель клиента, которая содержит список заказов и список или заказы, каждый содержит список элементов, как бы вы отделили это в представлении? На данный момент у моего CustomerModel есть CustomerViewModel. CustomerViewModel содержит список OrderViewModel. OrderViewModel содержит список ItemsViewModel. Поэтому, если я, например, получаю существующего клиента из слоя данных, тогда я создам соответствующие OrderViewModel и ItemViewModel на основе существующего списка. Это как обычно вы используете mvvm? Честно говоря, весь «перевернутый объект» действительно не чувствует себя хорошо.
My customerview содержит список заказов и элементов, каждый из которых представлен собственным пользовательским контролем и повторяется с использованием ItemsControl. каждый элемент имеет свою собственную кнопку добавления, редактирования и удаления. Я хочу иметь какое-то модальное диалоговое окно, которое отключает текущую вкладку (не все приложение), в то время как пользователь должен представить соответствующую форму. Самое легкое решение, которое я нашел, - это создание элемента управления содержимым, у которого есть элемент управления dp (с именем Control), который вы можете установить и автоматически создать наложение прямоугольника, когда isVisible = true. Затем управление привязано к свойству dialogControl CustomerViewModel .... Я не рассматриваю это как правильное решение mvvm, поскольку я, кажется, путаю viewmodel с представлением. Я думаю, что более правильный способ будет иметь viewmodel в customerviewmodel, которые представляют то, что содержит диалог, и предоставить шаблон для этого в каждой модели view ...., но я, похоже, не в состоянии думать о способе реализации наложения прямоугольника с помощью это решение.
Спасибо!
Я согласен с вашим определением и различиями между ViewModel и Model, но что вы делаете для свойств, поддерживаемых на уровне модели, которые должны быть открыты через привязку? Может ли уровень модели реализовать INotifyPropertyChanged, а если нет, как бы вы получили свойство на модели для изменения пузырьков до представления? – ScottCher
@ScottCher: Это действительно архитектурная проблема. Просто нет возможности автоматически пузырьки всех изменений на обычный-старый объект до ViewModel, который его обертывает, если вы не определяете события для этого. В моем случае я использую объекты неизменяемой модели, поэтому у меня нет этой проблемы. ;) –