Xamarin表格中的棱镜导航 - MasterDetailPage

时间:2017-03-03 13:14:48

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

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

现在,预期的行为(在Android中)是,当您导航到幻灯片菜单中的其他项目时,您应该能够使用硬件返回按钮导航回到第一个&# 34;细节"页面显示。

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

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

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

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

"BaseNavigationPage/SentPage"

现在,当按下后退时,它应该回到收件箱页面,我不知道如何解决这个问题......脑子...... ???

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

"RootPage/BaseNavigationPage/InboxPage/EmailPage"

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

"BaseNavigationPage/SettingsPage", useModalNavigation:true

如果你只是玩任何谷歌制作的应用程序,你会看到这些功能,这些是我所期望的,他们感觉很自然。

有任何帮助可以实现这一目标......?再次... ...布赖恩?

所有这一切都应该很简单,但它证明不是......

1 个答案:

答案 0 :(得分:1)

要在MasterDetailPage场景中获取您希望使用NavigationPage的行为,您必须创建一个实现INavigationPageOptions的自定义NavigationPage,并将ClearNavigationStackOnNavigation属性设置为false。这将通过每个导航操作将NavigationPage的导航堆栈固定到位。

关于模态导航的其他“预期行为”,您对模态导航的理解是错误的。模态导航不提供软件后退按钮。只要您需要软件返回按钮,就必须将页面包装在NavigationPage中,