Я вложил много усилий в исследования, но не могу решить свою проблему.
Чего я хочу достичь:
Я хотел бы использовать Xamarin Shell Navigation и скрыть верхние вкладки навигации (не строка заголовка -> называется «панель навигации», а не «панель вкладок»). Следите за изображением и оранжевой помеченной областью.
Shell.TabBarIsVisible="False" hides Bottom "TabBar" ("Tab 1", "Tab 2", "Tab 3")
Shell.NavBarIsVisible="False" hides Title Bar ("Page 1 Full Title")
Ничто не скрывает верхние навигационные вкладки под этой строкой заголовка
То есть моя структура:
<Shell>
<TabBar x:Name="RootTab">
<Tab
Title="Tab1" >
<ShellContent
Route="page1"
Title="page1"
ContentTemplate="{DataTemplate view:Page1}" />
<ShellContent
Route="page2"
Title="page2"
ContentTemplate="{DataTemplate view:Page2}" />
<ShellContent
Route="page3"
Title="page3"
ContentTemplate="{DataTemplate view:Page3}" />
<ShellContent
Route="page4"
Title="page4"
ContentTemplate="{DataTemplate view:Page4}" />
</Tab>
<Tab
Title="Tab2" >
<ShellContent
Route="tab2"
Title="tab2"
ContentTemplate="{DataTemplate view:Tab2Page}" />
</Tab>
<Tab
Title="Tab3" >
<ShellContent
Route="tab3"
Title="tab3"
ContentTemplate="{DataTemplate view:Tab3Page}" />
</Tab>
</TabBar>
</Shell>
Что я пробовал?
IsTabStop
Просто поместив 1 начальный ShellContent (Страница 1) во вкладке 1, а затем вручную добавляя / удаляя страницы (2, 3, 4) с помощью кода. Это прекрасно работает для android. Но iOS показывает только черную страницу после добавления новой страницы и удаления старой страницы из вкладки 1.
Размещение ShellContents за пределами TabBar. Но затем я теряю свой TabBar ...
Изображение оболочки: https://i.stack.imgur.com/WYugb.png
ОБНОВЛЕНИЕ:
Это работает в Android , но не в iOS (черная страница):
Наличие только одного ShellContent в XAML и добавление другого вручную в Code
AppShell.mytab.Items. Добавить (shell1);
AppShell.mytab.Items.Remove (shell0);
Когда я добавлю эту строку посередине:
Shell.Current.CurrentItem.Items [0 ] .CurrentItem = shell1; (Items [0] означает первую вкладку TabBar -> «Tab 1»)
Похоже, это работает, ура! и показывает следующую страницу, но выдает ошибку: System.NullReferenceException: «Ссылка на объект не установлена для экземпляра объекта» ShellSectionRootRenderer.cs: 201
Похоже https://github.com/xamarin/Xamarin.Forms/issues/5428
и https://github.com/xamarin/Xamarin.Forms/pull/10500
Отсутствует другой поток Опция IsVisible https://github.com/xamarin/Xamarin.Forms/issues/5232
IsVisible был запланирован, но удален, поскольку проблем с именами https://github.com/xamarin/Xamarin.Forms/pull/9023
ОБНОВЛЕНИЕ 2!
СЕГОДНЯ Обновление / Выпуск из Xamarin.Forms 4.5.0.657 до 4.6.0.726 решил проблему. Добавление и удаление не работает нормально в iOS!
https://github.com/xamarin/Xamarin.Forms/pull/10500
Xamarin.Forms 4.6 Ветвь: последний коммит 18 часов go