我在Xamarin Shell v5应用程序中指定了一个琐碎的页面结构。我在以下结构中有一个带飞出项的飞出:
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
<ShellContent>
<local:MainPage...
</ShellContent>
<ShellContent>
<local:Page1...
</ShellContent>
<ShellContent>
<local:Page2...
</ShellContent>
</FlyoutItem>
当我启动应用程序时,MainPage显示为默认值。到目前为止一切顺利。
弹出框显示这三个页面。还好。
当我点击Page2弹出框时,显示页面。但是没有创建导航堆栈,这意味着它还显示汉堡包菜单(而不是汉堡包图标所在的后退按钮)。
我想让Page2成为一个"子页面"。(导航方式),以便当用户点击Page2飞出时,顶部显示返回按钮,以便用户可以返回主页。
我一直在前后阅读文档,不知道如何在可视化shell层次结构中做到这一点。我认为它与路由有关,但我不确定如何指定路由,因此Page2成为"子页面"(或任何词)。
有人知道怎么做吗?这适用于iOS和Android。
我不喜欢在屏幕底部显示选项卡,就像我在许多例子中看到的那样。只是一个简洁的弹出菜单。
如果页面仍然在Shell层次结构中(FlyoutItem
中的page2),则汉堡包图标将始终显示。
您可以使用下面的代码来注册Shell可视化层次结构中不存在的页面。然后当你浏览到这些页面时,你可以使用后退按钮返回。
Routing.RegisterRoute("page2", typeof(Pages));
导航:
await Shell.Current.GoToAsync("page2");
最后我通过使用菜单项而不是FlyoutItems解决了这个问题。在每个MenuItem的回调中,我调用Shell.Current.GoToAsync("");
作为子打开页面,即可以执行反向导航。由于菜单项可以样式化(就像弹出式菜单项一样),它在设备上看起来很漂亮。这是一种变通方法,但我很满意。