Модальное окно с рисунком MVVM - PullRequest
1 голос
/ 20 декабря 2010

Я пытаюсь сделать модальное диалоговое окно, чтобы позволить пользователю знать некоторые сообщения об ошибках или позволить пользователю редактировать некоторые значения.Я использую шаблон MVVM, поэтому в моем главном окне есть часть управления и часть рабочего пространства.В части рабочей области я открываю модели представления тесно с табличкой данных для представлений (определяемых как usercontrols).С одного из этих видов я хочу открыть модальное диалоговое окно.Я следовал за этим ответом Окно ошибки показывает модальное в MVVM WPF .Как описано в этом ответе, я реализовал DialogClass в InvoiceViewModel.Но у меня проблема с отображением содержимого модального окна.Если я установлю содержимое окна в класс ViewModel, вывод будет простой текст с путем к пространству имен к этой ViewModel.(ViewModel присоединяется к представлению с табличкой данных.) Если я устанавливаю содержимое для представления - оно работает - представление отображается, но я не подчиняюсь шаблону MVVM (открытие View из ViewModel, поскольку ViewModel не имеет ссылки на View).

        ErrorViewModel newErrorViewModel = new ErrorViewModel();
        ErrorView newErrorView = new ErrorView();
        DialogWindow dialogWindow = new DialogWindow();
        //Not Working
        //dialogWindow.Content = newErrorViewModel;

        //Working But, breaking MVVM 
        dialogWindow.Content = newErrorView;
        dialogWindow.ShowDialog();

В ErrorView.xaml я прикрепил ErrorViewModel следующим образом.

<DataTemplate DataType="{x:Type vm:ErrorViewModel}">
    <vw:ErrorView/>
</DataTemplate>

Что я делаю не так?

Спасибо.

Ответы [ 3 ]

0 голосов
/ 21 декабря 2010

Понял.

Я поместил код для подключения модели и просмотра в ErrorView.xaml.Это моя ошибка, конечно.Я заменил эти строки на ресурс app.xaml, и он работает как очарование.

0 голосов
/ 21 декабря 2010

Может быть, вам интересно увидеть альтернативную реализацию, в которой используется Managed Extensibility Framework (MEF) для этого сценария.Пожалуйста, взгляните на ViewModel пример приложения WPF Application Framework (WAF) .

0 голосов
/ 20 декабря 2010

Вы назначаете newErrorView для содержимого диалога вместо newErrorViewModel

...