Извлекайте ваши классы модели представления из того, что вам нравится ... MVVM-light предлагает VieWModelBase, чтобы обеспечить реализацию ICleanUp, которая хороша для управления жизненным циклом объектов ViewModel.Мой собственный выбор заключался в том, чтобы реализовать все леса для уведомлений об изменении свойств в базовом классе, а затем использовать их для классов моделей.Единственные убедительные предложения, которые у меня есть в отношении классов моделей:
- Когда размер не подходит для всех .То, как вы храните свои данные, может отличаться от того, как вы взаимодействуете с данными, и объекты ViewModel должны быть ориентированы на поддержку взаимодействия, а не хранения, и если вам нужно взаимодействовать с одними и теми же данными (моделью) двумя совершенно разными способами, то разработайте дваразные ViewModel для поддержки этих различных взаимодействий.
- Используйте атрибуты (как System.ComponentModel) для аннотирования моделей.Вы можете выполнить большую часть своей работы по проверке таким образом - и проверка обратная связь является ответственностью уровня представления (View + ViewModel), а не проблемной области (то есть Модель).
Действительно хорошие классы ViewModel также обычно не имеют состояния, чтобы их можно было повторно использовать / повторно использовать в рамках одного взаимодействия с пользователем, так что большие списки данных можно виртуализировать (WPF поддерживает виртуализацию) для экономии оперативной памяти.
Помните, СУХОЙ (не повторяйте себя), ПОЦЕЛУЙ (будь проще, глупый!) И ЯГНИ (Тебе это не понадобится) - вот принципы, которые ты должен помнить выше любые принципы академического дизайна.Я буквально потратил впустую недели на приложение WPF, реализующее академически совершенные шаблоны MVC / MVVM, только чтобы обнаружить, что они отвлекают от общей понятности готового решения.Так что ... будь проще!:)