2010-07-19 4 views
2

В частности, в инструментах MVVM Light? Я еще не попал в код Prism, чтобы увидеть, что он делает в отношении регионов в пользовательском интерфейсе WPF. Похоже, что с обменом сообщениями и ViewModelLocator в MVVM Light вы можете сделать что-то подобное ... Можете ли вы? Может ли кто-нибудь привести примеры того, как вы могли это сделать? По сути, я бы хотел нажать на кнопку и загрузить в пользовательский интерфейс две разные модели представлений. Возможно, лучший способ объяснить - это функциональность навигационной панели, подобная Outlook.Как сделать регионы в WPF без призмы?

ответ

4

Это можно сделать довольно легко в WPF без каких-либо фреймворков.

Просто настройте DataTemplate в своем приложении (или на уровне Window/UserControl), который отображает ViewModel в представление, которое вы хотите отобразить для этой модели ViewModel.

Вы можете просто использовать ContentPresenter и привязать его содержимое к одному свойству (которое может быть типа object) в вашей модели ViewModel. Когда вы хотите установить «область» в определенный вид, просто установите свойство в соответствующий ViewModel, и WPF автоматически подключит все для вас.

+0

Сладкий, я понял, что должен быть путь XAML тоже. Благодарю. – nportelli

+0

Хорошо. Должно быть, я недостаточно понимаю. Я полагаю, что я не создал DataTemplate. Не знаете, как сопоставить ViewModel с представлением. Я предполагаю, что это так, что я не получаю имя объекта, как сейчас. Но означает ли это, что представление должно знать, какую модель просмотра отображать? – nportelli

+1

@nportelli: В слое «Просмотр» где-то необходимо указать, что «ViewModel XXX переходит в View YYY». Вот и все. Прочтите мой раздел «Templating» (и, необязательно, посмотрите пример кода) из моей серии MVVM. Он использует этот метод и описывает, как заставить DataTemplates работать: http://reedcopsey.com/series/windows-forms-to-mvvm/ –

Смежные вопросы