Подтвердить что ты не робот

К MVVM или не к MVVM, который является вопросом

Я переписываю приложение на основе форм Windows, и я собираюсь использовать WPF. Приложение в значительной степени опирается на технологии перетаскивания, в очень графически среде. Использует отчеты "Дизайн" и т.д., Перетаскивая элементы на сетку, перемещая их, выравнивая настройки правой кнопки мыши и т.д., Все из которых сохраняются в базе данных. Также управляйте потоком программы путем рисования блок-схем, с помощью маршрутизации и создания desicion, все нарисованных на форме и снова сохраняйте в базе данных.

Подходит ли MVVM к такого рода приложениям, или я пытаюсь установить круглую привязку в квадратное отверстие.

Ваши мысли оцениваются.

4b9b3361

Ответ 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, и вы можете найти много учебников и кода, которые помогут вам в этом.