Я продолжаю бороться с шаблоном MVVM и, пытаясь создать практический проект для малого/среднего проекта, столкнулся с рядом проблем. Одна из этих проблем состоит в том, чтобы выяснить, как получить преимущества развязки с помощью этого шаблона, не создавая много повторяющегося, трудноподдерживающегося кода.
Моя нынешняя стратегия заключалась в создании "богатых" моделей. Они полностью осознают, что они будут потребляться шаблоном MVVM и внедрять INotifyPropertyChanged, позволяют наблюдать их коллекции и оставаться осведомленными о том, что они всегда могут находиться под наблюдением. Мои классы ViewModel имеют тенденцию быть тонкими, но только раскрывают свойства, когда данные действительно должны быть преобразованы, причем основная часть их кода является обработчиками RelayCommand. Представления с удовольствием связывают либо с ViewModels, либо с моделями напрямую, в зависимости от того, требуется ли преобразование данных. Я использую AOP (через Postsharp), чтобы облегчить боль от INotifyPropertyChanged, что позволяет легко сделать все мои классы класса "богатыми".
Существуют ли существенные недостатки в использовании этого подхода? Могу ли я предположить, что ViewModel и View настолько тесно связаны, что, если мне нужно новое преобразование данных для представления, я могу просто добавить его в ViewModel по мере необходимости?