#xamarin #prism
#xamarin #призма
Вопрос:
У меня есть masterdetailview, который использует prism. Когда я нажимаю на один из пунктов меню, меню «гамбургер» отображается на панели навигации новой страницы, которую я нажал, и я действительно просто хочу, чтобы на верхней панели навигации отображалась кнопка «Назад» и была возможность вернуться назад. Как я могу этого добиться? Когда мое приложение загружается, я вызываю
await NavigationService.NavigateAsync("/MainPage/NavigationPage");
Я подумал, что мог бы позвонить
await NavigationService.NavigateAsync("/MainPage/NavigationPage/InviteFriends");
и это обеспечило бы новую страницу кнопкой возврата на главную, но когда я делаю это, это ничего не делает
Редактировать
если я изменю на
await NavigationService.NavigateAsync("/MainPage/NavigationPage/FeaturePage");
именно так будет называться домашняя страница (страница функций), она вообще не загрузит страницу.
Главная страница — это мой список других страниц, на которые нужно перейти, который отображается при нажатии кнопки «гамбургер», если это поможет. Функциональная страница — это страница, которую я хотел бы показать под страницей гамбургера и сделать «домашним» экраном.
правильно ли я это делаю?
Комментарии:
1. Как работает ваш код при нажатии на пункты меню?
2. Как и сказал Кайо, нам нужно больше информации о коде и скриншоте.
3. @WendyZang-MSFT обновлен
4. @cahyo обновлен! Спасибо!
Ответ №1:
Итак, если мы возьмем ваш пример, у вас будет следующий стек навигации:
Главная страница / Страница навигации
Давайте предположим, что ваш код навигации выглядит следующим образом в модели представления Master-Detail
await NavigationService.NavigateAsync("/MainPage/NavigationPage/InviteFriends");
Это приведет к следующему стеку навигации:
/ Главная страница / Страница навигации /Пригласить друзей
Это потому, что навигация была вызвана со страницы master-detail. Страница master-detail считается корневой страницей в Prism, и при переходе со страницы Master-detail она устанавливает целевую страницу в качестве страницы сведений master-detail.
Ознакомьтесь с этой статьей для получения более подробной ссылки
Будьте осторожны — запуск с /MainPage приведет к очистке стека навигации
Одним из быстрых решений этого является добавление вашей домашней страницы в навигационный вызов:
await NavigationService.NavigateAsync("MainPage/NavigationPage/HomePage/InviteFriends");
Это создаст следующее:
Страница мастер-детализации / Страница навигации / Домашняя страница / Пригласить друзей
Мы надеемся, что это должно привести к ответу, который вы ищете. Надеюсь, это помогло. Удачного кодирования!
Редактировать:
Я думаю, что если вы выделите свою начальную страницу с подробными сведениями в отдельный файл, вы сможете выполнить следующее:
await NavigationService.NavigateAsync("MainPage/NavigationPage/HomePage/InviteFriends");
Комментарии:
1. Это именно то, что я хочу сделать. И я на самом деле пробовал именно это, но когда я нажимаю на кнопку, ничего не происходит, не уверен, почему
2. @MicahArmantrout можете ли вы предоставить несколько фрагментов кода навигации?
3. Я только что включил фактический источник в свой вопрос
4. @MicahArmantrout находится ли ваша домашняя страница внутри сведений о главной странице сведений? или это в отдельном файле? ваш код просто настраивает страницу сведений. Я отредактирую свой ответ в соответствии с вашим сценарием
5. нет, они находятся на отдельных страницах, я обновил свой вопрос, чтобы дать более подробную информацию