@sharpb

Навигация в wpf приложении — как реализовать?

Здравствуйте. Буквально неделю начал использовать wpf и с#, до этого был nodejs разработчиком.
Когда начал писать своей wpf приложение, то появилась идея менять страницы в главном окне.
Как я это реализовал в рамках mvvm:
Например, у нас есть 5 страниц, поэтому, я в главном xaml прописал для каждой свой DataTemplate с указанием view (User controls), т.е. как бы зарегистрировал их. Зарегистрировал 5 раз.
Далее в главной viewmodel я организовал CurrentView, где храню текущий viewmodel (user control) и, соответственно, при нажатии кнопки запускается команда, которая меняет CurrentView.

Все работает, но есть много минусов:
- Необходимость регистрировать для каждого view и viewmodel свой DataTemplate в Window.Resources. Т.е. если у меня 20 вьюшек, то это будет просто жесть.

- Для каждой кнопки, которая осуществляет навигацию необходимо создавать свою команду, которая будет менять view. У всех этих команд будет дублирование кода с разницей в одно слово.

- Нет возможности динамически добавлять страницы.

Какой самый простой способ реализовать нормальную управляемую навигацию. Кстати, пишу на своем mvvm велосипеде. Для маленького проекта не вижу смысла использовать prism или catel. MvvmLight, вообще походу запущен и документации нет. На сайте ссылки дают 403.

Да и так в учебных целях интересно посмотреть, поэтому не советуйте, пожалуйста, фреймворки.
  • Вопрос задан
  • 1116 просмотров
Пригласить эксперта
Ответы на вопрос 1
@WayMax
Для "контейнера" страниц используй "Frame" (с параметром NavigationUIVisibility="Hidden").
Для самих страниц пиши классы наследованные от класса "Page".
Для отображения страницы: экземплярКлассаFrame.Navigate(экемплярКлассаСтраницы).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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