К MVVM или не к MVVM, который является вопросом
Я переписываю приложение на основе форм Windows, и я собираюсь использовать WPF.
Приложение в значительной степени опирается на технологии перетаскивания, в очень графически среде. Использует отчеты "Дизайн" и т.д., Перетаскивая элементы на сетку, перемещая их, выравнивая настройки правой кнопки мыши и т.д., Все из которых сохраняются в базе данных. Также управляйте потоком программы путем рисования блок-схем, с помощью маршрутизации и создания desicion, все нарисованных на форме и снова сохраняйте в базе данных.
Подходит ли MVVM к такого рода приложениям, или я пытаюсь установить круглую привязку в квадратное отверстие.
Ваши мысли оцениваются.
Ответы
Ответ 1
Мой прием - использовать MVVM, но не религиозно.
Я имею в виду, используйте модель для своих представлений, но при необходимости используйте какой-то код (drag & drop, double-click). Найдите баланс, который поможет вашему развитию, не сводя вас с ума.
Ответ 2
MVVM отлично зарекомендовал себя в WPF. Можете ли вы перетащить с WPF и MVVM? Что вы можете. Попробуйте найти "WPD Drag Drop Behavior"
Ответ 3
Есть две действительно хорошие причины для MVVM:
- Это помогает вам создавать бизнес-логику
и код доступа к данным, который больше
легко протестировать устройство
- С очень небольшими дополнительными усилиями все
вашего UX следует легко изменить
в Blend
Как уже отмечалось несколькими плакатами, любое событие, связанное с UX, может обрабатываться в коде, но вы должны подвергать и получать доступ (чтение и запись) данных через ваши модели просмотра для удобства привязки к вашим представлениям.
Что касается дополнительных усилий, о которых я упоминал в № 2, вы можете легко добавить статическое свойство в свой объект App, чтобы определить, работает ли приложение против представления, открытого в Blend. Если вид открыт в Blend, используйте данные из памяти, вместо того, чтобы делать вызовы доступа к данным. Вот пример кода, который работает для проверки того, имеет ли Blend вид View open:
if (Application.Current == null || Application.Current.GetType() == typeof(Application))
{
isInDesignMode = true;
}
else
{
isInDesignMode = false;
}
Надеюсь, что это поможет.
Ответ 4
Если вы ищете приложение maintianance и тестируемость в долгосрочной перспективе, убедитесь, что вы можете делать это с MVVM и WPF. или просто пойдите с WPF. Начальная кривая MMVM очень крутая.
Ответ 5
Шаблоны, подобные MVVM, должны сделать жизнь проще. Поэтому для любого случая, если вам кажется, что шаблон дает вам трудное время, не стесняйтесь сломать его или попробовать что-то еще. Слепо следовать чему-то не поможет. Но в любом случае MVVM также поддерживает сложные взаимодействия с пользовательским интерфейсом, такие как Drag and Drop, я считаю, что поведение может помочь вам в этом. Поиск в google для поведения перетаскивания WPF, и вы можете найти много учебников и кода, которые помогут вам в этом.