Для чего нужен MVVM-фреймворк?
Я знаю некоторые Mvvm Framework, которые представили в этой теме
пожалуйста, опишите или дайте мне ссылку на то, для чего они полезны? нет информации о MVVM о MVVM Framework. спасибо:) я хочу знать: что такое MVVM Framework?
2 ответа
Я думаю, что ваш вопрос не совсем точен. Насколько я понимаю, вы спрашиваете об особенностях каждого фреймворка?!
Вы можете найти подробную информацию здесь и здесь. Тем не менее, по крайней мере одна из этих ссылок уже была указана в упомянутой вами теме...
РЕДАКТИРОВАТЬ:
По сути, инфраструктура MVVM представляет собой набор классов, которые обычно используются в приложениях, использующих шаблон MVVM (Model-View-ViewModel). Это может включать в себя системы обмена сообщениями для связи между независимыми частями программного обеспечения, методы внедрения зависимостей, базовые классы для ViewModels, шаблоны проектов / классов, механизмы проверки, часто используемые команды, методы отображения диалоговых окон и так далее...
Чтобы полностью понять такую структуру, вы должны сначала понять шаблон MVVM. Потому что только тогда (или даже только после того, как вы сделали свой первый проект MVVM) у вас будет понимание проблем и / или проблем этого шаблона.
Чтобы использовать Mvvm Framework, просто выполните следующие шаги:
- У вас есть модель и модель представления с тем же именем.
View-модели не должны быть обертками вокруг моделей. Задача модели представления состоит в том, чтобы обрабатывать запросы на внешние сервисы, такие как загрузка и сохранение данных. Сами данные, а также проверка и большая часть бизнес-логики должны быть в моделях.
Я не могу подчеркнуть это достаточно. Всякий раз, когда вы создаете модель представления, которая оборачивает модель путем делегирования, вы вносите огромную дыру в свой API. В частности, все, что имеет прямую ссылку на модель, может изменить свойство таким образом, что модель представления и, следовательно, пользовательский интерфейс никогда не уведомляются. Аналогично, любые изменения в вычисляемых полях в модели не будут распространяться обратно на модель представления.
- У вас есть вид и модель с тем же именем.
В идеале модели представления не зависят от используемых ими экранов. Это особенно верно в приложении WPF, где несколько окон могут совместно использовать один и тот же экземпляр модели представления.
Для небольших приложений вам может понадобиться только одна модель представления для всего приложения. Для более крупных приложений вам может понадобиться один для основных функций и один для каждого вторичного аспекта, такого как управление конфигурацией.
- У вас нет кода позади.
В абсолютном выражении код позади не является ни хорошим, ни плохим. Это просто место для размещения логики, специфичной для отдельного представления или элемента управления. Поэтому, когда я вижу представление без кода, я сразу же проверяю следующие ошибки:
- Касается ли модель представления определенных элементов управления по имени?
- Предоставляется ли модели представления доступ к элементам управления через параметр команды?
- Используется ли EventToCommand или другое поведение с утечкой вместо простого обработчика событий?
EventToCommand от MVVM Light особенно плох, потому что он предотвратит сбор мусора элементов управления после их удаления с экрана.
- View-модели прослушивают уведомления об изменениях свойств
Если модель имеет более длительный срок службы, чем модель представления, которая прослушивает ее события, то, возможно, у вас утечка памяти. В отличие от представлений, которые имеют незагруженное событие, модели представлений не имеют хорошей истории для управления жизненным циклом. Так что, если они прикрепят событие к модели, которая может превзойти их, тогда модель представления будет просочиться.