Xamarin Forms Shell FlyoutItem 自定义路由

Xamarin Forms Shell FlyoutItem custom routes

我想创建一个包含 3 个页面的 Xamarin 应用 AboutPage, Page1, Page2. 3 个页面使用 FlyoutItem 分组如下:

<FlyoutItem  FlyoutDisplayOptions="AsMultipleItems" >
    <ShellContent Route="AboutPage" Title="About" Icon="icon_about.png"  ContentTemplate="{DataTemplate local:AboutPage}" />
    <ShellContent Route="Page1" Title="Page1" Icon="icon_about.png" ContentTemplate="{DataTemplate local:Page1}" />
    <ShellContent Route="Page2" Title="Page2" Icon="icon_about.png" ContentTemplate="{DataTemplate local:Page2}" />
</FlyoutItem>

我希望应用程序在启动后登陆 AboutPage,我想将 Page1 的路线定义为 AboutPage/Page1Page2 AboutPage/Page2。从 Flyout 导航到 Page1Page2 后,我希望将页面推到 AboutPage 的顶部。

如果我使用 GoToAsync() 它可以工作,但我必须注册路由

Routing.RegisterRoute("Page1", typeof(Page1));
await Shell.Current.GoToAsync("//AboutPage/Page1");

我可以覆盖 Flyout 上的 Click 事件以使用哪个路径吗? 有没有更好的解决方案我没有看到?

试试这个方法。

 <FlyoutItem ...
                >
        <Tab ...
             Route="AboutPage" >
            <ShellContent ...
                          Route="Page1" />
            <ShellContent ...
                          Route="Page2" />
        </Tab>
       
    </FlyoutItem>

感谢 WenxuLi-MSFT 的评论,

我决定使用他的建议,我将覆盖 onbackpressed 行为以导航到想要的页面。