Управление несколькими представлениями WPF в приложении - PullRequest
4 голосов
/ 01 декабря 2009

Итак, я видел, что в WPF существует служба навигации для поддержки потока через приложение. Я на самом деле не на рынке функциональности типа «назад» и «вперед». Я просто ищу хороший способ переключения между представлениями, когда нажата кнопка на определенном виде. Я использую MVVM, поэтому я не уверен, могу ли я позволить App.xaml.cs, возможно, содержать копию каждого View или ViewModel и позволить вызову команды ViewModel в App.xaml.cs для переключения. Возможно, я должен просто обработать событие Click на кнопке и сделать немного этого. Close (); NewWindow.Show ();.
Как и во многих вещах в WPF, этот не интуитивно понятен для меня, хотя, возможно, есть несколько простых решений.

Спасибо! * * 1004

Ответы [ 2 ]

2 голосов
/ 05 декабря 2009

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

Как это работает, можно увидеть в примерах приложений WPF Application Framework (WAF) .

2 голосов
/ 01 декабря 2009

Я создал класс «оконного загрузчика», который создается классом приложения при запуске приложения. У оконного загрузчика есть словарь, который поддерживает связь типов моделей представлений и типов представлений. У него также есть метод, который принимает экземпляр модели представления, разрешает представление на основе типа модели представления, мгновенно отображает представление, устанавливает текст данных представления в модель представления и затем показывает его. Загрузчик окна также регистрирует событие в модели представления, которое возникает, когда окно хочет закрыться.

В загрузчике окон реализован интерфейс IWindowLoader, и ссылка на него сохраняется в каждой модели представления (когда загрузчик окон создает экземпляр модели представления, он назначает себя общедоступному свойству IWindowLoader в модели представления). Таким образом, любая модель представления может привести к отображению любой другой модели представления, не зная о представлениях и не делая само отображение. Кроме того, оконный загрузчик может быть легко издеваться для тестирования.

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

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