Навигация Xamarin Forms
Всем привет!
Бьюсь уже неделю... Прошу помощи.
Обычный стандартный проект Xamarin forms. Главная страница - tabbedpage (ну тип такой, все знают). И есть еще одна страница tabbedpage.
Объясните как правильно сделать переход с первой на вторую, пожалуйста. Метод
Navigation.PushAsync(new MySecondTabbedPage())
вызывает вторую страницу, но верхнее и нижнее меню задваиваются... Т.е. показывается меню и первой страницы и второй.
Как показать меню только второй страницы???
Верхнем меню я называю то место сверху где появляется кнопка "назад", нижним - там где ссылки на дочерние страницы.
Пробовал использовать метод:
App.Current.MainPage = new NavigationPage(new MySecondTabbedPage())
тогда все хорошо (меню не задваиваются) но НЕТ КНОПКИ НАЗАД... А это принципиально важно.
Спасибо, за помощь.
Ответы (1 шт):
App.Current.MainPage = new NavigationPage(new MySecondTabbedPage()) эквивалентно App.Current.MainPage = new MySecondTabbedPage() - мы просто меняем MainPage.
в любой из страниц есть NavigationStack, с которым можно работать при помощи Navigation.PushAsync и Navigation.PopAsync. при Push xamarin будет накидывать страницу "поверх" текущей, по кнопке "назад" или Pop - убирать страницу. работает как колода карт.
TabbedPage в целом не задумывалась для использования в качестве навигационной страницы. TabbedPage - это Page, которая содержит коллекцию страниц. если у Вас главная - TabbedPage, а Вы хотите в её NavigationStack накинуть страницу, то в Push обычно передают не экзамеляр TabbedPage, а ContentPage. тогда xamarin создаст NavigationPage с кнопкой "назад", но не будет вкладок/табов. однако если из находящейся в коллекции страницы вызвать Push c ContentPage в качестве аргумента, возможно вы получите необходимое (или Push с TabbedPage изнутри основной TabbedPage). но это слегка tricky.
если нужны табы в NavigationPage, или кнопка "назад" в TabbedPage , можно встроить в NavigationBar вьюху.
если в одном приложении есть потребность в нескольких страницах с табами, возможно стоит рассмотреть MasterDetailPage, она позволяет добавить всплывающее меню слева, и это будет непротиворечиво с точки зрения UX (хотя я тут не эксперт). вот пример. либо свой кастомный ContentPage cо своим кастомным TabbedView и пушить его NavigationStack. вариантов масса