Является ли модалильность анти-паттерном в MVVM?

Там есть интересная статья, в которой обсуждаются модели общения между моделями представлений.

Недавно я изо всех сил пытался реализовать модальное диалоговое окно в приложении WPF MVVM, но чем больше я об этом думаю, тем больше я вижу причин, почему это сложно, и почему нет встроенных помощников для достижения этой цели. Ориентация на разные платформы только усиливает это представление: то, что может выглядеть подходящим для модального диалога, показывающего выбранные элементы, обычно реализуется путем перехода к другому представлению на мобильных устройствах.

Итак, мои вопросы к тем, кто успешно внедрил шаблон MVVM и избежал выделения кода: вы также избегали модальных диалогов? Какие замены вы нашли подходящими? Я могу думать по крайней мере о двух:

  • Поместите дочернее (модальное) представление в новое представление и реализуйте связь между родителем и подмоделью, используя pub / sub;
  • Добавьте панель с дочерним элементом управления непосредственно в родительский вид и просто включите ее видимость, чтобы активировать дочерний вид в качестве всплывающей моделирующей модальности.

Второй подход, безусловно, более ограничен, он не работает, когда родительское представление может порождать различные дочерние представления, но выглядит подходящим, когда родительское представление должно отображать небольшое одиночное всплывающее окно. Или лучше использовать первый подход как более общий. Есть ли другие альтернативы?

1 ответ

Так я делаю диалоги в mvvm.

ViewModel, которая вызывает диалоговое окно:

 var result = this.uiDialogService.ShowDialog("Dialogwindow title goes here", dialogwindowVM);

 ... do anything with the dialog result...
Другие вопросы по тегам