WPF MVVM получает родителя из МОДЕЛИ ПРЕДСТАВЛЕНИЯ

В приложении MVVM WPF.

Как Вы устанавливаете второго родителя окон от ViewModel?

пример:

view1 -- viewModel1

viewModel1вызовы команды:

var view2 = new view2

view2.Owner = <----Это - проблемная область. Как я получаю view1 как владелец здесь от viewModel?

view2.Show()

Править:

См. принятый ответ ниже, затем считайте следующее редактирование.

I'am с помощью светового сигнала MVVM-> http://mvvmlight.codeplex.com/ (потрясающий btw)

Испеченное - в системе обмена сообщениями является большим. Я теперь отправляю сообщение от viewmodel до моего представления, говоря этому показать другое окно.

Для сообщения I'am в настоящее время с помощью строки с оператором переключения в основном представлении для определения, что представление открыться; однако я могу переделать маркеры, которые также являются частью инструментария светового сигнала MVVM.

Спасибо!

21
задан Andrey Gordeev 18 February 2013 в 10:28
поделиться

2 ответа

На мой взгляд, открытие нового окна является обязанностью View, а не ViewModel. Лично я бы использовал тот же подход, который использовался для отображения диалогового окна (это уже обсуждалось на этом форуме):

Попросите ViewModel отправить сообщение в View с просьбой открыть новое окно. (в качестве альтернативы) используйте IDialogService или как вы хотите его назвать, что вы передаете конструктору ViewModel. Эта служба будет отвечать за открытие окна (или делегирование этой задачи представлению). Таким образом, вы сохраняете четкое разделение проблем, и ваша виртуальная машина остается тестируемой (вы можете выполнить модульное тестирование, чтобы запрос на open, новое окно WIndow было отправлено, но вы не смогли проверить, действительно ли окно открыто).

Есть ли в этом смысл?

Ура,

Лоран

25
ответ дан 29 November 2019 в 21:12
поделиться

У меня нет собственного ответа, но вот несколько ссылок на вещи, которые я рассматривал в последнее время и которые могут помочь. Мне также будет интересно узнать, что посоветуют другие.

Как я понимаю, главное в том, что вы не должны создавать представления внутри модели представления, если это возможно, поэтому вам нужно средство передачи информации о том, что вам нужно, в свободной связке.

http://www.codeproject.com/KB/WPF/XAMLDialog.aspx

http://www.codeproject.com/KB/architecture/MVVM_Dialogs.aspx

Обработка диалогов в WPF с помощью MVVM

1
ответ дан 29 November 2019 в 21:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: