使用 Caliburn.Micro 删除 Xamarin Forms 应用程序上的导航栏

Remove navigation bar on Xamarin Forms app with Caliburn.Micro

当使用 FormsApplication 基础 class 和使用 Caliburn.Micro 的全新 Xamarin.Forms 应用程序时,我最终在屏幕顶部看到一个空的导航栏.我假设它是由 Caliburn.Micro 以某种方式创建的,因为开箱即用的 Xamarin.Forms 应用程序没有。

有什么方法可以在没有此导航栏的情况下将 Caliburn.Micro 与 Xamarin.Forms 一起使用吗?

我没有使用过 Caliburn.Micro,但我假设它用 NavigationPage 包装您的页面,正如您所描述的那样会发生什么。

您应该可以通过在页面中设置一个简单的属性来隐藏该导航栏,如下所示:

<ContentPage NavigationPage.HasNavigationBar="false"
    ..... >
</ContentPage>

如果您不使用 XAML 页面而是在代码中完成所有 UI,那么您可以在页面构造函数中这样做:

NavigationPage.SetHasNavigationBar(this, false);

对我有用:

protected override void OnCreate(Bundle bundle)
{
    base.OnCreate(bundle);
    this.Window.AddFlags(WindowManagerFlags.Fullscreen); // hide the status bar

                // Set our view from the "main" layout resource
    SetContentView(Resource.Layout.Main);

    int uiOptions = (int)Window.DecorView.SystemUiVisibility;

    uiOptions |= (int)SystemUiFlags.LowProfile;
    uiOptions |= (int)SystemUiFlags.Fullscreen;
    uiOptions |= (int)SystemUiFlags.HideNavigation;
    uiOptions |= (int)SystemUiFlags.ImmersiveSticky;

    Window.DecorView.SystemUiVisibility = 
     (StatusBarVisibility)uiOptions;
}

如果您使用的是 Xamarin Forms 3.x 在构造函数中试试这个

 SetValue(NavigationPage.HasNavigationBarProperty, false);
 InitializeComponent();

这让我抓狂了一段时间,因为我看到的每个关于背后代码的答案都是部分答案。

假设在您的 App.Xaml.cs 文件中,您的 NavigationPage 构造函数设置如下:

MainPage = new NavigationPage(new Astronomy.MainPage());

然后您必须进入 MainPage 代码后面并添加代码以删除 NavBar:您不能将行添加到应用程序构造函数。

public MainPage()
    {
        InitializeComponent();
        NavigationPage.SetHasNavigationBar(this, false);
    }

很高兴我终于弄明白了!这让我头疼了一段时间!

如果您使用的是 Shell,(如果您在首次创建项目时选择了 Visual Studios 三个模板中的任何一个,则可能是)NavigationPage.HasNavigationBar="False" 将无法工作。尝试将这行代码添加到您的每个 ContentPages

Shell.NavBarIsVisible="False"

新来的!我的第一条评论

确认“Cedric Moore”的答案有效! 谢谢,花了好几个小时终于成功了!

在页面顶部(默认位于“Views”文件夹内)

(AboutPage.xaml) 是第一个,也是我在这个例子中使用的那个。

在 ContentPage 的 <> 内,添加 Shell.NavBarIsVisible="False"

示例:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         x:Class="YourNameHere.Views.AboutPage"
         xmlns:vm="clr-namespace:YourNameHere.ViewModels"
         Title="{Binding Title}"
         Shell.NavBarIsVisible="False">

更新 MvvmCross nuget 包(到 8.0.2)和 Xamarin Forms neget 包(到 5.0.0)后,我需要明确地放置这个选项。

put NavigationPage.HasNavigationBar="False" on your xaml ComtentPage or MvxContentPage