【问题标题】:Prism Navigation in Xamarin Forms - MasterDetailPageXamarin 表单中的 Prism 导航 - MasterDetailPage
【发布时间】:2017-03-03 13:14:47
【问题描述】:

我有一个使用 Prism 6.3 pre-2 的主详细信息页面设置,我终于让它按预期工作,导航到“详细信息”页面;所以汉堡按钮显示滑动抽屉,我有一个简单的 ListView 绑定到 ViewModel,我列出了一些项目,我使用 NavigateCommand 正确导航。

现在,预期的行为(在 Android 中)是,当您导航到滑出菜单中的其他项目时,您应该能够使用硬件后退按钮导航回第一个“详细信息”页面显示。

例如,假设您的应用具有此设置,并且列出的项目是收件箱、草稿和已发送。默认视图将是您决定的默认详细视图,在此示例中,它很可能是收件箱。因此,如果我导航到已发送,然后按返回,它应该返回到收件箱,同样,如果我转到已发送 -> 草稿,然后按返回,它应该返回到收件箱,因为这是默认的起点,如果您再次按下返回,应用程序应该退出。目前,使用 Prism 导航,无论您使用此设置导航到哪个页面,它都会立即退出。

请注意,我已经正确设置了,我基本上有这样的东西(例如):

await NavigationService.NavigateAsync("RootPage/BaseNavigationPage/InboxPage");

当我导航到像 Sent 这样的另一个页面时,相对 URI 是这样的:

"BaseNavigationPage/SentPage"

现在,当按下返回时,它应该回到收件箱页面,我不确定如何解决这个问题......大脑......???

除此之外,还缺少另一种意外行为。 如果我想在使用主详细信息页面时显示模式页面,它不会像谷歌编写的任何应用程序那样工作......如果你打开任何具有这种布局的谷歌应用程序,这很容易看到。如果您显示设置模式窗口,它会弹出,设置导航标题和后退箭头,基本上看起来就像您向下导航一步一样:

"RootPage/BaseNavigationPage/InboxPage/EmailPage"

但是,如果我执行以下操作,我希望此功能可用:

"BaseNavigationPage/SettingsPage", useModalNavigation:true

如果您只是简单地使用任何 Google 制作的应用程序,您就会看到这些功能,这些都是我所期望的,而且感觉很自然。

有什么帮助可以实现这个...?再次...布赖恩...?

所有这些都应该很简单,但事实证明并非如此......

【问题讨论】:

    标签: android xaml xamarin.forms prism master-detail


    【解决方案1】:

    要在 MasterDetailPage 场景中使用 NavigationPage 获得您想要的行为,您必须创建一个实现 INavigationPageOptions 的自定义 NavigationPage 并将 ClearNavigationStackOnNavigation 属性设置为 false。这将使 NavigationPage 的导航堆栈与每个导航操作保持在原位。

    关于您对模态导航的其他“预期行为”,您对模态导航的理解是错误的。模态导航不提供软件后退按钮。任何时候你想要一个软件后退按钮,你都必须将页面包装在 NavigationPage 中,

    【讨论】:

      猜你喜欢
      • 2017-01-24
      • 2018-11-30
      • 2018-12-10
      • 2018-03-01
      • 2017-05-03
      • 2016-06-06
      • 1970-01-01
      • 1970-01-01
      • 2018-08-16
      相关资源
      最近更新 更多