【问题标题】:MasterDetailPage and NavigationPage combination within XamarinXamarin 中的 MasterDetailPage 和 NavigationPage 组合
【发布时间】:2016-08-24 13:38:58
【问题描述】:

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

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

但其中一个ContentPages 包含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));
}

这样完成后,Back 按钮将呈现在 MasterDetailPage 上方。

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

【问题讨论】:

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


    【解决方案1】:

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

    _masterDetailPage.Detail = new NavigationPage(page);
    

    或者

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

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

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

    您将看到返回按钮而不是汉堡包。

    看看sample

    【讨论】:

    • MasterDetailPage 的 Detail 属性中的页面已经在导航页面中。
    • 我已经添加了一个示例项目,请看一下。
    • 抱歉回答晚了,没有太多时间。我已经查看了您的示例,并且确实将页面放在了 Navigationpage 的详细信息中。
    • 想说通过将我的初始 NavigationPage 放入代码隐藏而不是 XAML 来解决它,这在我看来很奇怪。
    猜你喜欢
    • 2020-10-09
    • 1970-01-01
    • 1970-01-01
    • 2019-03-17
    • 2017-11-06
    • 2018-03-01
    • 1970-01-01
    • 2021-01-16
    • 2018-01-20
    相关资源
    最近更新 更多