Вопрос

Поскольку я продвигаюсь в MVVM и MVVM-light, я узнал, что нет MVVM-Light предоставляется базовый класс для моделей.

Но из моего понимания, обмен сообщениями и повышением уведомлений также произошло в модели. По крайней мере, в связи между моделями, я бы обнаружил, что обмен сообщениями придет очень удобно.

Поэтому я только что решил вывести мою модель из ViewModelBase, хотя некоторые из свойств (например, время проектирования) будут неиспользованы.

Но чем больше я смотрю на это, тем больше я думаю, что что-то пропустил. Это считается «плохим практикой» для получения моих моделей от ViewModelBase?

И это нормально использовать обмен сообщениями для модели связи?

Это было полезно?

Решение

Выимение ваших классов смотровой модели от того, что вам нравится ... MVVM-Light предлагает ViewModelBase для обеспечения внедрения ICLEANUP - что полезно для управления жизненным циклом объектов ViewModel. Мой собственный выбор должен был реализовать все леса для уведомлений об изменении имущества в базовом классе, затем вытекают из этого для модельных классов. Об одном сильном предложении у меня есть относительные классы модели:

  1. Как только размер не подходит всем. Отказ Как вы храните свои данные, могут отличаться от того, как вы взаимодействуете с данными, и объекты ViewModel должны быть ориентированы на поддержку взаимодействия, а не хранения, и если вам нужно взаимодействовать с теми же данными (модель) в двух совершенно разных способах, то проектировать два Разные ViewModels для поддержки этих различных взаимодействий.
  2. Используйте атрибуты (A La System.comPonentModel), чтобы аннотировать модели. Вы можете получить много ваших валидационных работ, выполненных таким образом - и проверка Обратная связь Является ли ответственностью презентационного слоя (View + ViewModel), а не проблемный домен (т. Е. Модель).

Действительно хорошие классы ViewModel также обычно, как правило, достаточно без гражданства, чтобы их можно было переработано / повторно использовать в одном пользователе взаимодействия, так что большие списки данных могут быть виртуализированы (WPF поддерживает виртуализацию) для сохранения оперативной памяти.

Помните сухой (не повторяйте себя), поцелуй (держите его простым, глупым!) И ягни (тебе это не понадобится) - это принципы, которые вы должны иметь в виду над Любые академические принципы дизайна. Я с литератую потраченную впустую недели в приложении WPF, реализующий академически совершенные модели MVC / MVVM, только чтобы найти, что они затруднены формируют общую понимание готового решения. Так что ... Держите это просто! :)

Другие советы

Я бы посмотрел на EventAggregator в Составная библиотека приложений. Отказ Ответ в это Пост имеет хорошее описание этого. Джереми Миллер сообщение идет в немного больше деталей.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top