从 Shell FlyoutItem 导航到下一级
Posted
技术标签:
【中文标题】从 Shell FlyoutItem 导航到下一级【英文标题】:Navigating from Shell FlyoutItem to one level down 【发布时间】:2020-09-09 13:33:29 【问题描述】:我在 Shell 视图中有以下结构
<FlyoutItem Route="home" Title="Home">
<ShellContent ContentTemplate="DataTemplate views:HomePage" />
</FlyoutItem>
<FlyoutItem Route="leaverequest" Title="Leave Request">
<ShellContent ContentTemplate="DataTemplate views:LeaveRequestView" />
</FlyoutItem>
项目显示正确。 当我单击 Leave Request 项时,LeaveRequestView 会在顶部导航中打开一个汉堡菜单。我希望 LeaveRequestView 显示一个后退按钮。
我尝试在 ShellContent 中设置 Route 属性而不是 FlyoutItem 但结果是一样的。
在上面的路由定义中是否需要做一些事情,或者这是要在 LeaveRequestView XAML 中设置的属性?
PS:如果我使用 Shell.Current.GoToAsync("leaverequest") 在后面的代码中导航,则行为是正确的。我在顶部导航中看到了返回按钮。
【问题讨论】:
【参考方案1】:很遗憾,它无法显示带有遵循定义的 XAML 的后退按钮。
<FlyoutItem Route="home" Title="Home">
<ShellContent ContentTemplate="DataTemplate views:HomePage" />
</FlyoutItem>
<FlyoutItem Route="leaverequest" Title="Leave Request">
<ShellContent ContentTemplate="DataTemplate views:LeaveRequestView" />
</FlyoutItem>
从上面的路由定义,我们不能让LeaveRequestView
显示一个后退按钮。
因为它是由 Xamarin Forms Shell 设计的。如果在 XAML 中使用FlyoutItem
,则表示子视图将通过汉堡菜单导航。
正如您所说,除非使用Shell.Current.GoToAsync("leaverequest")
进行导航,否则将显示后退按钮。同时,你会看到汉堡菜单没有显示。
注意:这应该是Xamarin Forms FlyoutItem的典型特征。如果不需要此功能,则无需创建 Shell 应用程序。
【讨论】:
感谢您的解释。我使用 MenuItem 而不是 FlyoutItem 来达到预期的效果。 @PrashantGupta 很高兴你解决了这个问题!这将是一个很好的解决方案。您可以在答案中更新,如果回复有帮助,请不要忘记接受它作为答案(点击该答案左上角的✔),它将帮助有类似问题的其他人。以上是关于从 Shell FlyoutItem 导航到下一级的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin Forms Shell Flyout:如何消除 FlyoutHeader 和第一个 FlyoutItem 之间的间隙?