Xamarin Master Detail棱镜导航栏后退按钮

时间:2020-08-18 22:17:12

标签: xamarin prism

我有一个使用棱镜的masterdetailview。当我单击菜单项之一时,汉堡菜单显示在我单击的新页面的导航栏上,而我只希望顶部导航栏显示后退按钮并能够返回。我该如何实现? 当我的应用加载后,我会打电话

      await NavigationService.NavigateAsync("/MainPage/NavigationPage");

我认为我可以打电话

  await NavigationService.NavigateAsync("/MainPage/NavigationPage/InviteFriends");

这将为新页面提供一个返回首页的返回按钮,但是当我这样做时它什么也没做

编辑

如果我更改为

  await NavigationService.NavigateAsync("/MainPage/NavigationPage/FeaturePage"); 

这是主页(功能页)的称呼,它根本不会加载该页面。

MainPage是我要去的其他页面的列表,如果有帮助,则在按下汉堡包时显示。功能页面是我想在汉堡包页面下方显示的页面,并且是“主页”屏幕。

我正确地做到了吗?

1 个答案:

答案 0 :(得分:1)

因此,如果我们以您的示例为例,您将具有以下导航堆栈:

主页/导航页

让我们假设您的导航代码在主从视图模型中看起来像这样

await NavigationService.NavigateAsync("/MainPage/NavigationPage/InviteFriends");

这将导致以下导航堆栈:

/ MainPage / NavigationPage / InviteFriends

这是因为从主细节页面调用了导航。 母版细节页面在Prism中被视为根页面,从母版细节页面导航时,会将目标页面设置为母版细节页面。

请查看本文以获取更详细的分类信息Link

请注意-从/ MainPage开始将清除导航堆栈

对此的一种快速解决方案是将您的主页添加到导航调用中:

await NavigationService.NavigateAsync("MainPage/NavigationPage/HomePage/InviteFriends");

这将创建以下内容:

MasterDetailPage / NavigationPage / HomePage / InviteFriends

这有望创建您想要的响应。 希望这会有所帮助。编码愉快!

编辑:

我认为,如果您将初始的详细信息页面分成单独的文件,则应该能够执行以下操作:

await NavigationService.NavigateAsync("MainPage/NavigationPage/HomePage/InviteFriends");