MVVM - Использование простой модели в качестве собственной модели представления является плохой практикой? - PullRequest
2 голосов
/ 04 декабря 2009

Думаю, у нас есть простая модель , например. пусть это будет Персона {Имя, Возраст} .

Теперь мы хотим отобразить список людей.

  • Люди только для чтения
  • Нам не нужно редактировать их
  • Нам не нужны никакие дополнительные вещи, такие как свойства презентации и т. Д.

Теперь вопрос: если это хорошая практика, не создавайте PersonViewModel класс, который, вероятно, будет копией класса модели или будет делегировать все его свойства? Является ли хорошей идеей просто привязать список к списку людей, а не к моделям их просмотра? Это выглядит достаточно сухо, но как насчет идеи MVVM?

Ответы [ 4 ]

7 голосов
/ 04 декабря 2009

У меня нет проблем с обходом виртуальной машины и использованием M непосредственно в представлении. Иногда модели настолько малы и статичны, что загрузка их в виртуальную машину-обертку неэффективна.

0 голосов
/ 05 декабря 2009

Я бы не создавал ViewModel для бизнес-объекта Person, если ViewModel не вводит новые необходимые функции.

Возможно, вас заинтересует второй подход в сообществе MVVM: создание ViewModel для каждого представления, а не для бизнес-объекта.

Примеры приложений, которые следуют этому подходу, можно найти на веб-сайте WPF Application Framework (WAF) .

0 голосов
/ 05 декабря 2009

Насколько мне известно, если вы реализуете INotifyPropertyChanged, то он становится ViewModel, и вы можете связываться с ним. :) Когда я написал SoapBox Core , который все MVVM, я принял подход, что все является ViewModel. Единственными объектами Model были классы из сторонних библиотек, которые я ввел и обернул в собственную модель ViewModel.

0 голосов
/ 04 декабря 2009

Я создал автономные модели ViewModels, но, как правило, не автономные модели. Причиной этого является привязка данных - большинство POCO не реализуют интерфейс INotifyPropertyChanged, и их добавление в псевдомодели, кажется, лишает цели повторного использования простого класса и соблюдения шаблона MVVM.

Теперь, если вы ЗНАЕТЕ, что никогда не будете их редактировать, это может быть не плохой идеей. ВМ с простым перенаправлением свойств мне кажется немного бессмысленным.

...