Должен ли вид View косвенно ссылаться на свойства в модели в MVVM?
Скажем, у меня есть представление. Он DataContext
привязан к ViewModel
, а ViewModel
предоставляет свойство Model
.
- Может ли
MVVM
связать поля в View
с свойствами в Model
(например, Binding Path=Model.FirstName
)?
- Если
Model
реализует INotifyPropertyChanged
?
Моя команда использует Prism и MVVM в WPF. Многие примеры Prism косвенно связаны с Model
. Я лично сомневаюсь, что это правильный подход. Я думаю, что материал в модели должен выставлять поведение (не только на уровне свойства) и должен сообщать важные события by, er, event
- что клиенты могут подписаться или нет.
Я думаю, что, если объекты домена/модели реализуют INotifyPropertyChanged
, как-то говорит миру, что он UI/UX знает и вводит некоторую избыточность в ViewModel
s.
Как вы думаете? Что работает для вас? Четкое различие между View
/ViewModel
/Model
или гибридом, используемым примерами Призмы?
Ответы
Ответ 1
Я видел, как многие люди внедряли INotifyPropertyChanged
прямо в свои Model
, и я также видел, как люди делали это в ViewModel
.
Я предпочитаю и делаю это (реализуем INotifyPropertyChanged
) в ViewModel
. Я согласен с вами, что иногда создает избыточность в ViewModel
, но я предпочитаю четкое разграничение/разделение между ViewModel
и Model
и какова их цель. Мне Model
просто буквально Model
. Это просто представление моего Business Data
не более того. Для меня это не должно вызывать никаких изменений в View
(через уведомление об изменении свойства события). View
должен разговаривать с ViewModel
, а ViewModel
должен использовать Model
. Мне не нравится View, непосредственно влияющий на Model
. Мне не нравится использовать Model.FirstName
, потому что мне кажется, что он идет против MMVM
, сообщая View
, что находится в Model