Должно ли представление косвенно связываться со свойствами в модели в MVVM? - PullRequest
14 голосов
/ 18 января 2012

Допустим, у меня есть вид.Это DataContext привязано к ViewModel, а ViewModel предоставляет свойство Model.

  • Является ли MVVM похожим на привязку полей в View к свойствам вModel (например, Binding Path=Model.FirstName)?
  • Должен ли Model реализовать INotifyPropertyChanged?

Моя команда использует Prism и MVVM в WPF.Многие примеры Prism косвенно связаны с Model.У меня лично есть сомнения, что это правильный подход.Я думаю, что вещи в модели должны демонстрировать поведение (не только на уровне свойств) и должны сообщать важные события, например, event s - на которые клиенты могут подписаться или нет.

Я думаю, что реализация объектов домена / модели INotifyPropertyChanged как-то говорит миру, что он поддерживает UI / UX, и что-то вроде избыточности в ViewModel s.

Чтоты думаешь?Что работает для вас?Четкое различие между View / ViewModel / Model или гибридом, используемым в примерах Prism?

1 Ответ

23 голосов
/ 18 января 2012

Я видел, как многие люди реализуют INotifyPropertyChanged непосредственно в своих Model, и аналогично я видел людей, которые делают это также в ViewModel.

Я предпочитаю и делаю это (внедряю INotifyPropertyChangedViewModel.Я согласен с вами, это иногда создает избыточность в ViewModel, но я предпочитаю четкое различие / разделение между ViewModel и Model и каково их назначение.Для меня Model это буквально Model.Это просто представление моего Business Data не более и не менее.Для меня это не должно вызывать каких-либо изменений в View (через свойство уведомить об изменении события).View должен поговорить с ViewModel, а ViewModel должен использовать Model.Мне не нравится, когда View напрямую влияет на Model.Я не люблю использовать Model.FirstName, потому что мне кажется, что мы идем против MMVM, говоря View, что в Model

...