Xamarin Forms在内容页面之后导航到MasterDetail页面

时间:2017-03-03 05:49:54

标签: xamarin xamarin.forms

我正在使用Xamarin Forms创建一个应用程序,当用户第一次启动应用程序时,它们会被发送到登录页面。一旦他们登录,他们就会被重定向到MasterPage,这是一个MasterDetail页面。但是,当我尝试导航到新的MasterDetail页面时,我只获得了详细页面,并且缺少显示主部分的按钮。应用栏上出现的唯一内容是我设置的标题。我目前正在使用这样的MasterPage:

App.Current.MainPage = new NavigationPage(new MasterPage())
{
     Title = "Welcome " + user.firstName
};

每次运行,这都不是问题,因为当用户打开应用程序时,它会自动将其登录并直接进入MasterPage,除非在首次使用时。但是,这对我来说是一个非常重要的问题,因为它发生在用户第一次使用我的应用程序时,它将成为他们第一印象的一部分。

1 个答案:

答案 0 :(得分:8)

当您使用MasterDetailpage时,不应将其包装到Navigationpage中(就像您的代码示例一样)。因为MasterDetailPage应该每次都位于顶部而不是NavigationPage内。

要在不同页面之间导航,您应该将DetailPageMasterDetailPage包裹在NavigationPage内。

这里有一些代码需要澄清:

var view = new MyFirstPage();
Application.Current.MainPage = new MasterPage(view);

在MasterPage构造函数中,执行以下操作:

public MasterPage(Page detailpage)
{
    // Set the master-part
    Master = new MasterContentPage();

    // Set detail-part (with a navigation page)
    Detail = new NavigationPage(detailpage);
}

之后,您可以使用此导航在应用内导航:

var mdp = Application.Current.MainPage as MasterDetailPage;
await mdp.Detail.Navigation.PushAsync(myNextPage);

我通常会创建一个静态助手类AppNavigator来完成这些工作。

有关详细信息,请查看MasterDetailPage instructions on the Xamarin developer guides