Це спірна тема в MVC / MVVM. Одні говорять, що це нормально для View, щоб отримати доступ до Моделей безпосередньо, інші кажуть, що слід загортати Моделі у ViewModels, щоб абстрагувати їх від подання. Я особисто не прихильник жодного підходу.
Однією з головних цілей MVC / MVVM є роз'єднання інтерфейсу користувача, бізнес-логіка та дані. Отже, маючи на увазі цю концепцію, дозвол Перегляду безпосередньо отримувати доступ до Моделей створює залежність, яку ви, можливо, не хочете мати. З іншого боку, загортання Моделей у ViewModels часто є стомлюючим і не дуже корисним, оскільки ViewModels, як правило, виступають просто як прохід до Моделей.
Мені подобається підхід до того, щоб ваші Моделі реалізували певний інтерфейс, давайте назвати його IModel. Ваш клас ViewModel може запропонувати екземпляри об'єктів, що реалізують IModel для споживання View. Перегляд просто знає, що він працює з об'єктами IModel, які отримує від ViewModel. Це видаляє сторонній код обгортки ViewModel, а також приховує конкретну реалізацію IModel від View. Пізніше ви можете замінити одну реалізацію IModel на іншу, не впливаючи на View один біт.