我有一个使用棱镜的masterdetailview。当我单击菜单项之一时,汉堡菜单显示在我单击的新页面的导航栏上,而我只希望顶部导航栏显示后退按钮并能够返回。我该如何实现? 当我的应用加载后,我会打电话
await NavigationService.NavigateAsync("/MainPage/NavigationPage");
我认为我可以打电话
await NavigationService.NavigateAsync("/MainPage/NavigationPage/InviteFriends");
这将为新页面提供一个返回首页的返回按钮,但是当我这样做时它什么也没做
编辑
如果我更改为
await NavigationService.NavigateAsync("/MainPage/NavigationPage/FeaturePage");
这是主页(功能页)的称呼,它根本不会加载该页面。
MainPage是我要去的其他页面的列表,如果有帮助,则在按下汉堡包时显示。功能页面是我想在汉堡包页面下方显示的页面,并且是“主页”屏幕。
我正确地做到了吗?
答案 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");