Xamarin中的MasterDetailPage和NavigationPage组合

时间:2016-08-24 13:38:59

标签: c# xamarin navigation xamarin.forms master-detail

我正在创建一个Xamarin应用程序,我希望将多个页面组合在一起,MasterDetailPageNavigationPage

我的MainPage包含MasterDetailPageMasterDetailPage的主人包含一个视图列表(自定义类,用于存储类类型,要显示的图像和名称等信息)用户可以查看。这些观点都是ContentPage。单击列表中的项目时,ContentPage将使用反射进行初始化,然后存储在MasterDetailPage中。目前,一切都是按照Xamarin的建议制作的。

但其中一个ContentPages包含ListView

Example of the ListView

选择项目后,ListView必须打开详细视图,用户必须能够返回ListView。因为我正在使用Navigation类并在NavigationPage内推送页面,如下所示(绑定可以做得更好,但只是为了感受Xamarin):

private async Task Handle_ItemSelected(object sender, Xamarin.Forms.SelectedItemChangedEventArgs e)
{
        if (_detail == null)
        {
            _detail = new Detail();

        }
        _detail.BindingContext = SelectedTrack;
        await Navigation.PushAsync(new NavigationPage(_detail));
}

完成此操作后,后退按钮将呈现在MasterDetailPage上方。

Example of the NavigationPage

有什么办法可以在转到ListView的详细信息页面时删除MasterDetailPage的'汉堡'按钮吗?或者我目前使用错误的工作流程?

1 个答案:

答案 0 :(得分:1)

将详细信息页面设置为NavigationPage。

_masterDetailPage.Detail = new NavigationPage(page);

MainPage = new MasterDetailPage
            {
                Master = new MyMasterPage(),
                Detail = new NavigationPage(MyHomePage())
            });

然后在详细信息视图中,您可以通过以下方式导航到其他页面:

await Navigation.PushAsync(new NavigationPage(_detail));

你会看到后退按钮而不是汉堡包。

查看sample