【问题标题】:Xamarin Forms navigating to a MasterDetail Page after a Content PageXamarin 表单在内容页面之后导航到 MasterDetail 页面
【发布时间】:2017-07-23 03:09:03
【问题描述】:

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

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

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

【问题讨论】:

    标签: xamarin xamarin.forms


    【解决方案1】:

    当您使用MasterDetailpage 时,不应将其包装成Navigationpage(如您的代码示例)。因为MasterDetailPage 应该每次都在顶部,而不是在NavigationPage 内。

    要在不同页面之间导航,您应该将 DetailPage 中的 MasterDetailPage 包裹在 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

    【讨论】:

    • 这可行,但现在在 Android 上,我的 MasterPage 一直到我的屏幕顶部和通知栏。你知道如何预防吗?
    • “一直到我的屏幕顶部”是什么意思?
    • 母版页本身占据了包括通知栏在内的整个屏幕高度。
    • 也许我错过了一些东西......但这就是 MasterPage 的工作方式。当用户打开它时,它会从左侧滑入并填满整个高度(但不是整个宽度)。当您认为有问题时,您可以编辑您的问题并添加问题的图像...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-17
    • 2021-12-17
    • 2016-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多