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

时间:2016-04-15 21:11:40

标签: xamarin.forms caliburn.micro

当使用Caliburn.Micro将FormsApplication基类与全新的Xamarin.Forms应用程序一起使用时,我最终在屏幕顶部显示一个空的导航栏。我认为它是由Caliburn.Micro以某种方式创建的,因为开箱即用的Xamarin.Forms应用程序没有。

有没有办法在没有这个导航栏的情况下使用带有Xamarin.Forms的Caliburn.Micro?

7 个答案:

答案 0 :(得分:80)

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

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

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

如果您没有使用XAML页面并在代码中执行所有UI,那么您可以在页面构造函数中以这种方式执行此操作:

NavigationPage.SetHasNavigationBar(this, false);

答案 1 :(得分:3)

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

Shell.NavBarIsVisible="False"

答案 2 :(得分:2)

它对我有用:

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;
}

答案 3 :(得分:1)

这使我发疯了一段时间,因为我看到的背后代码的每个答案都是部分答案。

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

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

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

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

很高兴我终于想通了!一直让我头疼!

答案 4 :(得分:0)

如果您使用的是Xamarin Forms 3.x,请在构造函数中尝试

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

答案 5 :(得分:0)


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

<块引用>

将 NavigationPage.HasNavigationBar="False" 放在您的 xaml ComtentPage 上 或 MvxContentPage

答案 6 :(得分:-1)

新来了!我的第一条评论

也确认“塞德里克·摩尔”的答案有效! 谢谢,花了好几个小时,终于成功了!

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

(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">