Xamarin Master Detail prism 导航栏后退按钮

Posted

技术标签:

【中文标题】Xamarin Master Detail prism 导航栏后退按钮【英文标题】:Xamarin Master Detail prism Nav bar back button 【发布时间】:2020-08-18 22:17:12 【问题描述】:

我有一个使用棱镜的 masterdetailview。当我单击其中一个菜单项时,汉堡菜单会显示在我单击的新页面的导航栏上,我真的只是希望顶部导航栏显示一个后退按钮并能够返回。我怎样才能做到这一点? 当我的应用加载时,我会调用

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

我想我可以打电话

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

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

编辑

如果我改成

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

主页将被称为(功能页面)它根本不会加载页面。

MainPage 是我的其他页面列表,如果有帮助,当按下汉堡包时会显示该列表。特色页面是我希望显示在汉堡包页面下方并成为“主”屏幕的页面。

我这样做对吗?

【问题讨论】:

点击菜单项时你的代码如何? 就像cahyo说的,我们需要更多关于代码和截图的细节。 @WendyZang-MSFT 更新 @cahyo 更新了!谢谢! 【参考方案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");

【讨论】:

这正是我想做的。我实际上已经尝试过这个东西,但是当我点击按钮时没有任何反应,不知道为什么 @MicahArmantrout 你能提供一些导航代码的sn-ps吗? 我刚刚在我的问题中包含了实际来源 @MicahArmantrout 是您的主页在主详细信息页面的详细信息中吗?还是在单独的文件中?您的代码只是设置详细信息页面。我将编辑我的答案以匹配您的情况 不,它们在单独的页面中,我更新了我的问题以提供更多详细信息

以上是关于Xamarin Master Detail prism 导航栏后退按钮的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin Master Detail prism 导航栏后退按钮

无法捕获 Xamarin ListView GroupHeader 单击事件

UWP 快速的Master/Detail实现

有没有办法修改子类,以便所有超类继承更改?

Win10 UWP开发系列:实现Master/Detail布局

当 Master 是 UITabBarController 时,从 UISplitViewController Detail 转到 Master?