Xamarin 中的 MasterDetailPage 和 NavigationPage 组合

MasterDetailPage and NavigationPage combination within Xamarin

我正在创建一个 Xamarin 应用程序,我想在其中合并多个页面,MasterDetailPageNavigationPage

我的MainPage包含MasterDetailPageMasterDetailPage的master包含一个视图列表(自定义class其中存储了[=48=等信息] 类型、要显示的图像和名称)用户可以查看。这些观点都是ContentPages。单击列表中的一项时,ContentPage 通过使用反射进行初始化,然后存储在 MasterDetailPage 中。目前一切都按照 Xamarin 的建议进行。

但是其中一个 ContentPages 包含一个 ListView

选择一个项目后,ListView 必须打开详细视图,并且用户必须能够 return 到 ListView。因此,我正在使用 Navigation class 并将页面推送到 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 上方。

有什么方法可以在转到 ListView 的详细信息页面时删除 MasterDetailPage 的 'burger' 按钮?还是我目前使用了错误的工作流程?

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

_masterDetailPage.Detail = new NavigationPage(page);

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

然后在您的详情视图中,您可以通过以下方式导航至其他页面:

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

您将看到后退按钮,而不是 Hamburger。

看看sample