Я укажу вам на особенно полезный video от Джейсона Долинджера.
Из мира WinForms, реализующего любой шаблон стиля MVX, казалось, было больше хлопот, чем это было необходимо, но после работы с WPF на пару лет я могу честно сказать, что я не буду рассматривать ничего меньшего. Вся парадигма поддерживается в готовом виде.
Прежде всего, ключевым преимуществом является возможность истинного разделения между «представлением» и «моделью».То, что это означает в реальном выражении, состоит в том, что если/когда ваша модель должна измениться, она может без необходимости просмотра и наоборот.
Во-вторых, хотя ваша модель может содержать все данные, которые могут вам понадобиться в вашем представлении, вы можете абстрагировать эти данные таким образом, чтобы ваша модель не поддерживала. Например, предположим, что ваша модель содержит свойство даты. В модели он может существовать только как объект DateTime
, но ваш взгляд может представить его совершенно по-другому. Без «viewmodel» вам придется либо дублировать свойство в «модели», чтобы поддерживать представление, либо изменять свойство, которое может серьезно запутать «модель».
Вы также можете использовать 'viewmodel' для объединения частей вашей модели, которые существуют в отдельных классах/библиотеках, чтобы облегчить более свободный интерфейс для «представления». Это очень маловероятно, что вы захотите работать с данными в своем коде так же, как пользователь захочет или захочет, чтобы эти данные были представлены им.
Кроме того, вы получаете поддержку автоматической двусторонней привязки данных между «view» и «viewmodel».
На самом деле существует целая куча дополнительных материалов, о которых я мог бы говорить, но Джейсон сказал, что это far лучше, чем я мог, поэтому мой совет - посмотреть видео. После нескольких дней работы, как это, вы будете удивляться, как вы справились с этим.
Удачи.
Я всегда смотрел MVVM как вариацию MVC. –