MVVM - Обязанности
Шаблон MVVM состоит из трех частей - модели, представления и модели представления. Большинство разработчиков вначале немного не понимают, что модель, представление и модель представления должны или не должны содержать и каковы обязанности каждой части.
В этой главе мы изучим обязанности каждой части шаблона MVVM, чтобы вы могли четко понять, какой код и куда идет. MVVM - это действительно многоуровневая архитектура для клиентской стороны, как показано на следующем рисунке.
Уровень представления состоит из представлений.
Логический слой - это модели представления.
Уровень представления - это комбинация объектов модели.
Клиентские службы, которые создают и сохраняют их, либо направляют доступ в двухуровневом приложении, либо через вызовы службы, а затем в ваше приложение.
Клиентские сервисы официально не являются частью шаблона MVVM, но часто используются с MVVM для достижения дальнейшего разделения и предотвращения дублирования кода.
Типовые обязанности
В общем, модель - самая простая для понимания. Это модель данных на стороне клиента, которая поддерживает представления в приложении.
Он состоит из объектов со свойствами и некоторых переменных, содержащих данные в памяти.
Некоторые из этих свойств могут ссылаться на другие объекты модели и создавать граф объектов, который в целом является объектами модели.
Объекты модели должны вызывать уведомления об изменении свойств, что в WPF означает привязку данных.
Последней обязанностью является проверка, которая является необязательной, но вы можете встроить информацию о проверке в объекты модели, используя функции проверки привязки данных WPF через интерфейсы, такие как INotifyDataErrorInfo / IDataErrorInfo.
Посмотреть обязанности
Основное назначение и обязанности представлений - определить структуру того, что пользователь видит на экране. Конструкция может содержать статические и динамические части.
Статические части - это иерархия XAML, которая определяет элементы управления и макет элементов управления, из которых состоит представление.
Динамическая часть похожа на анимацию или изменения состояния, которые определены как часть представления.
Основная цель MVVM состоит в том, чтобы в представлении не было кода.
Невозможно, чтобы не было никакого кода. По крайней мере, вам нужен конструктор и вызов для инициализации компонента.
Идея состоит в том, что код логики обработки событий, действий и управления данными не должен находиться в коде, стоящем за представлением.
Существуют также другие виды кода, которые должны быть включены в код, стоящий за любым кодом, который требуется для ссылки на элемент пользовательского интерфейса, который по своей сути является кодом просмотра.
Обязанности ViewModel
ViewModel - это основная суть приложения MVVM. Основная ответственность ViewModel - предоставить данные для представления, чтобы оно могло выводить эти данные на экран.
Это также позволяет пользователю взаимодействовать с данными и изменять данные.
Другой ключевой задачей ViewModel является инкапсуляция логики взаимодействия для представления, но это не означает, что вся логика приложения должна входить в ViewModel.
Он должен иметь возможность обрабатывать соответствующую последовательность вызовов, чтобы все происходило правильно в зависимости от пользователя или любых изменений в представлении.
ViewModel также должен управлять любой логикой навигации, например, решать, когда пора перейти к другому представлению.