C# 如何将根页面作为主页正确使用NavigationPage?

C# 如何将根页面作为主页正确使用NavigationPage?,c#,xamarin,xamarin.forms,C#,Xamarin,Xamarin.forms,如何正确使用根页面,以便使用正确的导航栏导航/pushasync到其他页面 现在看起来是这样的: MainPage = new RootPage (); 和我的根页面: public RootPage () { var theMenu = new MenuPage (this); theMenu.Title = "::"; Master = theMenu; NavigationPage page = new Nav

如何正确使用根页面,以便使用正确的导航栏导航/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上会崩溃。有什么办法可以解决这个问题吗?

看看这些例子:


据我所知,您拥有MasterDetailPage,并且希望在Detail page上执行导航

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


如果此方法位于MenuPage或RootPage中,则

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

因为此页面不是导航页面


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

此外,请在此处查看-该属性应处于启用状态,以便答案不会仅包含链接。Evn当链接提供大部分所需信息时,答案需要确定问题,并对解决方案或链接内容进行总结。确定。代码运行时,页面会发生变化,但问题是菜单页(用作masterdetailpage母版)仍然存在,而右侧的页面会发生变化。因此,我必须手动单击菜单页以转到页面,然后用力按Back进行解释,但当我使用detail.navigation.pushasync时,右侧的页面会发生更改,但母版页仍保留在应用程序的左侧。它不会推到整个下一页。你能解释一下你想要什么吗:只更改细节页或用新页替换整个MasterDetail页?我想转到一个完整的新contentpage,当我按back时,我返回到masterdetailpage,使用与以前相同的细节/母版。哦,我没有看到你的编辑。现在它工作得很好。唯一的问题是,当你回去的时候,我想再次展示这个菜单页。
async void contactClick (object s, EventArgs e)
    {
        await Navigation.PushAsync (new ContactPage());
    }