Кнопка возврата панели навигации Xamarin Master Detail prism

#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. нет, они находятся на отдельных страницах, я обновил свой вопрос, чтобы дать более подробную информацию