Кто знает, где можно посмотреть подробный пример WPF или WPF Prism приложения с постраничной навигацией, организованной по типу мастера в Windows? Чтобы с кнопками "Вперед"/ "Назад"/"Готово". То что нашел - просто подмена View при нажатии на кнопку, в первом приближении похоже, но из руководства по Prism следует, что для таких приложений предполагается использование навигационного сервиса и навигационного журнала.
Нашел неплохой пример здесь, но он для MVVM Light.
У меня это первая проба организовать постраничную навигацию, так что пример хотелось бы подробный.
Мой проект предполагает одну большую вью-модель, которая будет последовательно заполняться данными на нескольких окнах.
Asked
Active
Viewed 488 times
0
foxhound
- 460
-
Например, так: https://ru.stackoverflow.com/a/740529/10105 – VladD Mar 18 '18 at 22:04
-
@VladD: Пытался сделать по схеме по ссылке. Не получается переход. Как лучше будет: мне вопрос апдейтить с кодом или попытаться объяснить на пальцах что не работает? – foxhound Mar 22 '18 at 19:43
-
Лучше пример с кодом, конечно. Поскольку на этот вопрос уже есть ответ, может быть, имеет смысл задать отдельный вопрос. – VladD Mar 22 '18 at 20:58
-
@VladD Вынес в отдельный вопрос: https://ru.stackoverflow.com/questions/803527/%D0%9F%D0%B5%D1%80%D0%B5%D1%85%D0%BE%D0%B4-%D1%81%D0%BE-%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B-%D0%BD%D0%B0-%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%83-%D0%B2-wpf – foxhound Mar 23 '18 at 09:53
1 Answers
2
Иметь одну viewmodel для всех страниц не очень хорошая идея. Вы нарушаете принцип паттерна MVVM. Гораздо лучшим подходом будет иметь некий бизнес-объект, выделенный в отдельный класс, инстанс которого вы будете передавать каждой viewModel через dependency injection.
При таком подходе у вас не возникнет проблем с навигацией, поскольку использование сервиса навигации отлично ложится на такую архитектуру. Вы можете навигироваться на один и тот же регион многократно, заменяя активное представление. При этом вам будет доступна история и вы сможете вызывать навигацию на шаг назад через тот же самый сервис навигации.
Anton Shakalo
- 1,128
-
"Иметь одну viewmodel для всех страниц не очень хорошая идея. Вы нарушаете принцип паттерна MVVM" Справедливости ради MVVM не единственный паттерн при работе с WPF – Mar 19 '18 at 18:14
-
Вы правы, это я неправильно выразился. Будет именно так, как Вы написали. Будет одна сущность, которая будет заполняться на наверное десятке страниц. – foxhound Mar 19 '18 at 18:50
-
-
@AntonShakalo проблема - как сделать навигацию со страницы на страницу. Вопрос не столько в том, как я буду тянуть сущность со страницы на страницу , сколько как сделать навигационный сервис. – foxhound Mar 22 '18 at 19:41
-
@Foggy Если уж мы говорим о вью-модели в вопросе, скорее всего автор использует именно MVVM, так что ответ в контексте MVVM вполне ок. – VladD Mar 23 '18 at 10:11
-
@foxhound вам не нужно делать навигационный сервис, prism уже всё сделал за вас https://prismlibrary.github.io/docs/wpf/Navigation.html – Anton Shakalo Mar 23 '18 at 10:30
-
@VladD контекст следующий: "одну большую вью-модель, которая будет последовательно заполняться данными на нескольких окнах." можно читать как один большой источник данных разбитый на компоненты. – Mar 23 '18 at 14:45