在 Xamarin Forms 中隐藏 TabBar Shell

Hide TabBar in Xamarin Forms Shell

我不想在 Xamarin Forms Shell 4.0.0.497661 项目中隐藏 TabBar。

我尝试使用:

Shell.SetTabBarIsVisible(Shell.Current, false);

页面加载绘制后,没有任何效果

如果我在 InitializeComponent(); 之后放入代码隐藏 .cs 构造函数,则会启动空引用异常,但这对我来说不是问题。

如何在启动时或启动后隐藏TabBar?

编辑:

终于没办法隐藏底栏了... 当 FlyoutItem 包含在 Shell 上时,底栏出现,例如:

<FlyoutItem Route="animals"
            Title="Animals"
            FlyoutDisplayOptions="AsMultipleItems">

    <ShellContent Route="cats"
                Title="... />

如果删除 FlyoutItem,则不会显示底栏。

找不到其他方法删除它! 但它解决了我的问题。

抱歉,没有足够的代表。评论。

你在哪个 class Shell.SetTabBarIsVisible(Shell.Current, false);?

ShellCurrent 放在构造函数之后是否为 null?

编辑 2019 年 6 月 30 日:

我在 Shell 中测试了一些东西。 这是项目的 link:https://github.com/JesperBaltzersen/ShellTest 在 class Content1.Xaml.cs 中有一个切换标签栏的按钮处理程序:

    public bool NavVisible { get; set; }

    void OnButtonTapped(object sender, EventArgs args)
    {
        NavVisible = !NavVisible;
        Shell.SetNavBarIsVisible(this, NavVisible);
    }

希望对您有所帮助。

TabBarIsVisibleShellattached property。您应该将页面作为 SetTabBarIsVisible 中的第一个参数传递,以告知 shell 隐藏其标签栏。像这样使用它:

public AppShell()
{
    InitializeComponent();

    Shell.SetTabBarIsVisible(this, false);
}

你也可以把它放在任何你不需要标签栏的页面上。

另一种方法:

<Shell 
X:Class="..............:
xmlns:sd="..................."
Shell.IsTabBarVisible="False">

</Shell>

在我的例子中,我需要从子页面中删除标签栏,然后:Shell.TabBarIsVisible="False"

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             Title="Child page from shell"
             Shell.TabBarIsVisible="False"
             x:Class="AppMvvm.Views.User.LoginPage/>