使用 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"
将无法工作。尝试将这行代码添加到您的每个 ContentPage
s
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
当使用 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"
将无法工作。尝试将这行代码添加到您的每个 ContentPage
s
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