Создание дружественной к MVVM стратегии диалога

Я пытаюсь создать стратегию обработки всплывающих форм для использования в любой части моего приложения. На данный момент я понимаю, что мне понадобится единственный UserControl в корне моего MainWindow. Он будет привязан к собственной модели ViewModel, которая будет обрабатывать сообщения, отправляемые в приложении.

Я использую MVVM Light, и я новичок в классе Messenger .

Представьте себе сценарий Master / Details, где список объектов содержится в ListBox . Выбор одного из этих элементов и нажатие кнопки «Редактировать» приведет к отображению UserControl , охватывающего весь экран. Затем пользователь может отредактировать выбранный элемент и щелкнуть OK, чтобы зафиксировать изменение.

Я хочу, чтобы открытый UserControl был «универсальным» таким образом, чтобы я мог бросить любой (возможно, ViewModel ) на нем ... чтобы он отобразил ViewModel через DataTemplate и обработал все изменения объекта. Нажатие OK вызовет обратный вызов отправляющему классу и сохранит изменение, как и раньше.

Некоторые ситуации, когда это может быть полезно:

  1. Отображение сообщений об ошибках без обязательного ввода пользователем (кроме OK, чтобы закрыть его)
  2. Отображение формы редактирования для элемента данных
  3. Диалоги подтверждения (очень похожие на стандартный MessageBox)

Может ли кто-нибудь предоставить какие-либо примеры кода того, как я могу это сделать?

22
задан Kieren Johnstone 4 December 2012 в 11:12
поделиться