在MasterDetailPage上隐藏导航栏

时间:2018-03-07 16:48:26

标签: xamarin xamarin.forms

我有一个包含以下构造函数的MasterDetailPage:

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

        MessagingCenter.Subscribe<JobsPage>(this, "OpenMenu", (sender) => {
            IsPresented = true;
        });

        MasterPage.ListView.ItemSelected += ListView_ItemSelected;
        this.MasterBehavior = MasterBehavior.Popover;
        App.NavPage = new NavigationPage(new JobsPage() { Title = "Jobs" });
        Detail = App.NavPage;
    }

如您所见,我将SetHasNavigationBarSetHasBackButton设为false。

不同的页面(ContentPage,而不是MasterDetailPage)上,我在构造函数中做了同样的事情:

    NavigationPage.SetHasNavigationBar(this, false);
    NavigationPage.SetHasBackButton(this, false);
    InitializeComponent();

在我的ContentPage上,此功能正常,如下所示。

enter image description here

但是,在我的MasterDetailPage上,我仍然看到导航栏。

enter image description here

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:1)

不确定导航的结构如何,但请尝试以下方法:

public MainPage()
{

        InitializeComponent();

        MessagingCenter.Subscribe<JobsPage>(this, "OpenMenu", (sender) => {
            IsPresented = true;
        });

        MasterPage.ListView.ItemSelected += ListView_ItemSelected;
        this.MasterBehavior = MasterBehavior.Popover;

        var navPage = new NavigationPage(new JobsPage() { Title = "Jobs" });
        NavigationPage.SetHasNavigationBar(navPage, false);
        NavigationPage.SetHasBackButton(navPage, false);

        App.NavPage = navPage;
        Detail = App.NavPage;
}

答案 1 :(得分:0)

据我所知,Master-DetailPage不支持导航栏。它是您可以放置​​内容页面的根容器。这些页面现在可以包含一个导航栏,可以将您重定向到Master-DetailPage中的根页面。

答案 2 :(得分:0)

我遇到了类似的问题,我为此做了一个解决方案。

将细节设置两次。

// 1st time
var jobPage = new JobsPage() { Title = "Jobs" };
Detail = jobPage;

// 2nd time
var navPage = new NavigationPage(jobPage, false);
Detail = navPage;

在构造函数中设置1st,在OnAppearing中设置2nd。

试试吧。

答案 3 :(得分:0)

尝试在 MasterDetailPage 的详细信息页面中设置这些行

在代码后面

NavigationPage.SetHasNavigationBar(this, false);

在 xaml 中

NavigationPage.HasNavigationBar="False"