Управление несколькими представлениями WPF в приложении
Итак, я видел, что в WPF существует служба навигации для поддержки потока через приложение. Я на самом деле не на рынке функциональности типа "назад" и "вперед". Я просто ищу хороший способ переключения между представлениями, когда нажата кнопка на определенном виде. Я использую MVVM, поэтому я не уверен, что смогу позволить App.xaml.cs, возможно, содержать копию каждого View или ViewModel и позволить вызову команды ViewModel в App.xaml.cs для переключения. Возможно, я должен просто обработать событие Click на кнопке и сделать немного этого.Close(); NewWindow.Show();.
Как и во многих вещах в WPF, этот не интуитивно понятен для меня, хотя, возможно, есть несколько простых решений.
Спасибо!
2 ответа
Я создал класс "оконного загрузчика", который создается классом приложения при запуске приложения. У оконного загрузчика есть словарь, который поддерживает связь типов моделей представлений и типов представлений. У него также есть метод, который принимает экземпляр модели представления, разрешает представление на основе типа модели представления, мгновенно отображает представление, устанавливает текст данных представления в модель представления и затем показывает его. Загрузчик окна также регистрирует событие в модели представления, которое возникает, когда окно хочет закрыться.
В загрузчике окон реализован интерфейс IWindowLoader, и ссылка на него сохраняется в каждой модели представления (когда загрузчик окон создает экземпляр модели представления, он назначает себя общедоступному свойству IWindowLoader в модели представления). Таким образом, любая модель представления может привести к отображению любой другой модели представления, не зная о представлениях и не делая само отображение. Кроме того, оконный загрузчик может быть легко издеваться для тестирования.
Когда я прошел через тот же процесс, что и вы сейчас, я нашел много примеров того же базового паттерна. Я только что закончил кататься самостоятельно.
Чтобы решить эту проблему, нужно ввести контроллеры, отвечающие за рабочий процесс приложения. Они создают, показывают и закрывают несколько представлений в приложении.
Как это работает, можно увидеть в примерах приложений проекта WPF Application Framework (WAF).