Рассмотрим следующую оболочку Xamarin.Forms XAML:
<TabBar>
<Tab Title="Page1" Route="page1" Icon="page1.png">
<ShellContent ContentTemplate="{DataTemplate local:Page1}" />
</Tab>
<Tab Title="Page2" Route="page2" Icon="page2.png">
<ShellContent ContentTemplate="{DataTemplate local:Page2}" />
<ShellContent Route="page2a" ContentTemplate="{DataTemplate local:Page2A}" />
</Tab>
<Tab Title="Page3" Route="page3" Icon="page3.png">
<ShellContent ContentTemplate="{DataTemplate local:Page3}" />
</Tab>
</TabBar>
Это приводит к 3 нижним вкладкам. На странице 2 есть также две верхние вкладки.
Я могу успешно перемещаться с такими вызовами, как: .GoToAsync("//page1")
и .GoToAsync("//page2/page2a")
Я хотел бы, чтобы Page2A была страницей, которая толкается в верхней части вкладки Page2. Поэтому, когда я звоню GoToAsync("//page2/page2a")
, приложение переходит на вкладку Page2, но отображает страницу Page2A сверху. Я бы не хотел иметь верхних вкладок, но вместо этого Page2A NavBar будет отображать кнопку «Назад», и при нажатии Page2A будет извлекаться из стека, и Page2 снова будет видна.
Есть ли способ добиться этого с Shell, возможно, путем настройки моего XAML?
В настоящее время я просто использую старый метод PushAsync(..)
, но, похоже, стыдно не использовать преимущества навигационных функций Shell.