Xamarin 表单 Shell:Flyout 和 TabBar - 仅隐藏 TabBar 中的项目?
Xamarin Form Shell: Flyout and TabBar - Hide items in TabBar only?
我正在尝试在 Xamarin Shell 中创建双重导航,其中弹出窗口有 5 个项目(Page1、Page2、Page3、Page4、Page5),而底部 TabBar 只有 3 个相同的项目(第 1 页、第 3 页、第 5 页)。
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
<ShellContent Title="Page 1"
ContentTemplate="{DataTemplate local:Page1}"/>
<ShellContent Title="Page 2"
ContentTemplate="{DataTemplate local:Page2}"/>
<ShellContent Title="Page 3"
ContentTemplate="{DataTemplate local:Page3}"/>
<ShellContent Title="Page 4"
ContentTemplate="{DataTemplate local:Page4}"/>
<ShellContent Title="Page 5"
ContentTemplate="{DataTemplate local:Page5}"/>
</FlyoutItem>
我可以做相反的事情,我可以通过添加以下内容来隐藏弹出菜单中的项目:FlyoutItemIsVisible="False"
到 ShellContent,但没有等效项可以将项目隐藏在TabBar 但不是弹出窗口。
这在 Shell 中可行吗?
如果你想隐藏标签,你可以使用属性 IsVisible
来隐藏你的标签。
请参考以下代码:
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
<ShellContent Title="Page 1"
IsVisible="False"
ContentTemplate="{DataTemplate local:Page1}"/>
<ShellContent Title="Page 2"
ContentTemplate="{DataTemplate local:Page2}"/>
<ShellContent Title="Page 3"
ContentTemplate="{DataTemplate local:Page3}"/>
<ShellContent Title="Page 4"
ContentTemplate="{DataTemplate local:Page4}"/>
<ShellContent Title="Page 5"
ContentTemplate="{DataTemplate local:Page5}"/>
</FlyoutItem>
更新:
IsVisible="False" will hide the tab AND hide it in the flyout menu.
How do I hide the tab but keep the menu item in the flyout?
FlyoutItemIsVisible hides the flyout menu item and keeps the tab, I
need the reverse
您可以使用 MenuItem
来实现。
请参考以下代码:
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
<ShellContent Title="Page 1"
IsVisible="False"
ContentTemplate="{DataTemplate local:Page1}"/>
<ShellContent Title="Page 2"
ContentTemplate="{DataTemplate local:Page2}"/>
<ShellContent Title="Page 3"
ContentTemplate="{DataTemplate local:Page3}"/>
<ShellContent Title="Page 4"
ContentTemplate="{DataTemplate local:Page4}"/>
<!--<ShellContent Title="Page 5"
FlyoutItemIsVisible="False"
ContentTemplate="{DataTemplate local:Page5}"/>-->
</FlyoutItem>
<!--<TabBar>
<ShellContent Title="Page5" Route="Page5" ContentTemplate="{DataTemplate local:Page5}" />
</TabBar>-->
<MenuItem Text="Page5" StyleClass="MenuItemLayoutStyle" Clicked="OnMenuItemPage5Clicked">
</MenuItem>
<TabBar>
<ShellContent Route="Page5" ContentTemplate="{DataTemplate local:Page5}" />
</TabBar>
并在AppShell.xaml.cs
页面添加功能OnMenuItemPage5Clicked
private async void OnMenuItemPage5Clicked(object sender, EventArgs e)
{
await Shell.Current.GoToAsync("//Page5");
}
我正在尝试在 Xamarin Shell 中创建双重导航,其中弹出窗口有 5 个项目(Page1、Page2、Page3、Page4、Page5),而底部 TabBar 只有 3 个相同的项目(第 1 页、第 3 页、第 5 页)。
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
<ShellContent Title="Page 1"
ContentTemplate="{DataTemplate local:Page1}"/>
<ShellContent Title="Page 2"
ContentTemplate="{DataTemplate local:Page2}"/>
<ShellContent Title="Page 3"
ContentTemplate="{DataTemplate local:Page3}"/>
<ShellContent Title="Page 4"
ContentTemplate="{DataTemplate local:Page4}"/>
<ShellContent Title="Page 5"
ContentTemplate="{DataTemplate local:Page5}"/>
</FlyoutItem>
我可以做相反的事情,我可以通过添加以下内容来隐藏弹出菜单中的项目:FlyoutItemIsVisible="False"
到 ShellContent,但没有等效项可以将项目隐藏在TabBar 但不是弹出窗口。
这在 Shell 中可行吗?
如果你想隐藏标签,你可以使用属性 IsVisible
来隐藏你的标签。
请参考以下代码:
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
<ShellContent Title="Page 1"
IsVisible="False"
ContentTemplate="{DataTemplate local:Page1}"/>
<ShellContent Title="Page 2"
ContentTemplate="{DataTemplate local:Page2}"/>
<ShellContent Title="Page 3"
ContentTemplate="{DataTemplate local:Page3}"/>
<ShellContent Title="Page 4"
ContentTemplate="{DataTemplate local:Page4}"/>
<ShellContent Title="Page 5"
ContentTemplate="{DataTemplate local:Page5}"/>
</FlyoutItem>
更新:
IsVisible="False" will hide the tab AND hide it in the flyout menu. How do I hide the tab but keep the menu item in the flyout? FlyoutItemIsVisible hides the flyout menu item and keeps the tab, I need the reverse
您可以使用 MenuItem
来实现。
请参考以下代码:
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
<ShellContent Title="Page 1"
IsVisible="False"
ContentTemplate="{DataTemplate local:Page1}"/>
<ShellContent Title="Page 2"
ContentTemplate="{DataTemplate local:Page2}"/>
<ShellContent Title="Page 3"
ContentTemplate="{DataTemplate local:Page3}"/>
<ShellContent Title="Page 4"
ContentTemplate="{DataTemplate local:Page4}"/>
<!--<ShellContent Title="Page 5"
FlyoutItemIsVisible="False"
ContentTemplate="{DataTemplate local:Page5}"/>-->
</FlyoutItem>
<!--<TabBar>
<ShellContent Title="Page5" Route="Page5" ContentTemplate="{DataTemplate local:Page5}" />
</TabBar>-->
<MenuItem Text="Page5" StyleClass="MenuItemLayoutStyle" Clicked="OnMenuItemPage5Clicked">
</MenuItem>
<TabBar>
<ShellContent Route="Page5" ContentTemplate="{DataTemplate local:Page5}" />
</TabBar>
并在AppShell.xaml.cs
OnMenuItemPage5Clicked
private async void OnMenuItemPage5Clicked(object sender, EventArgs e)
{
await Shell.Current.GoToAsync("//Page5");
}