如何正确使用NavigationPage作为MainPage的根页?

时间:2016-04-11 17:26:16

标签: c# xamarin xamarin.forms

我应该如何正确使用rootpage,以便我可以使用正确的navigatiobar导航/ pushasync到其他页面。

现在看起来像这样:

MainPage = new RootPage ();

我的根页:

public RootPage ()
    {

        var theMenu = new MenuPage (this);
        theMenu.Title = "::";

        Master = theMenu;

        NavigationPage page = new NavigationPage(new StartPage ());
        Detail = page;
    }

如果我有这样的话,当我尝试导航到新页面时出现错误:

async void contactClick (object s, EventArgs e)
    {
        await Navigation.PushAsync (new ContactPage());
    }

错误:" iOS上不支持全局支持PushAsync,请使用NavigationPage。"

如果我改为:

MainPage = new NavigationPage (new RootPage ());

我有两个导航栏。我用......解决了这个问题:

NavigationPage.SetHasNavigationBar (this, false);

...在我的RootPage上,但是当我导航到新页面并且它在android上崩溃时,它会给它一个奇怪的动画。你有什么想法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:3)

据我所知,您有MasterDetailPage,并且您想在详细信息页面上执行导航。

如果是这样,您应该通过Detail.Navigation.Push / Popasync(..)推送/弹出页面(您的详细信息页面已经是NavigationPage)。

async void contactClick (object s, EventArgs e)
    {
        await Navigation.PushAsync (new ContactPage());
    }

如果此方法在MenuPage或RootPage中,那么你得到了

  

错误:“iOS上不支持全局支持PushAsync,请使用NavigationPage。”

因为这些页面不是NavigationPages。

编辑:如果要在导航后隐藏菜单,请将RootPage.IsPresented属性设置为false。

答案 1 :(得分:0)