MVVM View-First подхода Как изменить представление - PullRequest
4 голосов
/ 22 апреля 2010

Кто-нибудь знает, как изменить экраны (представления) в MVVM View-First-Approach (представление создает экземпляр ViewModel:

DataContext="{Binding Source={StaticResource VMLocator},
Path=Find[EntranceViewModel]}"

)

Например: вВ моем главном окне (оболочка) я показываю входной вид с помощью кнопки «GoToBeach».

<Window>
  <DockPanel>
    <TextBox DockPanel.Dock="Top" Text="{Binding Title}" />
    <view.EntranceView DockPanel.Dock="Top" />    
  </DockPanel>
</Window>

Когда нажата кнопка, я хочу избавиться от «EntranceView» и показать «BeachView».Мне действительно любопытно, если кто-нибудь знает способ сохранить подход View-First и изменить экран (представление) на «BeachView».Я знаю, что есть несколько способов реализовать это в подходе ViewModel-First, но это не вопрос.Perhabs Я что-то пропустил в своем расследовании mvvm и не вижу дрова для деревьев ... иначе я надеюсь на вдохновляющую дискуссию.

Ответы [ 3 ]

1 голос
/ 10 мая 2010

Одной из возможностей было бы иметь все представления в (MainWindow (Shell) и использование триггеров для их видимости. Но иметь много разных экранов (представлений), все объявленные в MainWindow, мне не подходит ...

Этот вопрос возник при чтении этого замечательного способа использования MEF с MVVM, который я нашел в блоге Джона Папаса: Простой локатор ViewModel для MVVM: пациенты покинули убежище. Но как бы ни был хорош этот брак зрения и модели представления, кажется, что нет способа изменить экраны, которые меня устраивают. :)

Так что, по моему мнению, если у вас много экранов (представлений), вам лучше использовать ViewModel-First-Approach ...

0 голосов
/ 09 февраля 2012

Возможно, вы захотите взглянуть на Prism (то есть библиотеку составных приложений). Prism облегчает навигацию между представлениями через менеджера региона. Это может быть излишним для вашего приложения и может занять некоторое время, чтобы разобраться. Prism также позволяет разрабатывать с использованием шаблона MVVM.

Дополнительную информацию о призме и призменной навигации можно найти в документации Prism .

0 голосов
/ 22 апреля 2010

Похоже, это может помочь: Создание ViewModel: сделать это до или после того, как станут доступны данные модели?

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...