Xamarin Forms Shell FlyoutItem 自定义路由

发布于 2025-01-11 07:10:23 字数 1126 浏览 0 评论 0原文

我想创建一个包含 3 个页面 AboutPagePage1Page2 的 Xamarin 应用程序。 这 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。从弹出窗口导航到 Page1Page2 后,我希望将页面推送到 AboutPage 的顶部。

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

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

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

I want to create a Xamarin App that contains 3 pages AboutPage, Page1, Page2.
The 3 page are grouped using FlyoutItem as follows:

<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>

I expect the app to land on the AboutPage once started and I want to define the route for Page1 as AboutPage/Page1 and Page2 AboutPage/Page2. Once navigated to Page1 or Page2 from Flyout I want the pages to pushed on top of the AboutPage.

If I used GoToAsync() it works but I have to register the routes

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

Can I override Click Event on Flyout to device which path to use?
Is there a better solution I am not seing?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

灯角 2025-01-18 07:10:23

试试这个方法。

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

Try this way.

 <FlyoutItem ...
                >
        <Tab ...
             Route="AboutPage" >
            <ShellContent ...
                          Route="Page1" />
            <ShellContent ...
                          Route="Page2" />
        </Tab>
       
    </FlyoutItem>
断肠人 2025-01-18 07:10:23

感谢 WenxuLi-MSFT 的评论,

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

Thanks to WenxuLi-MSFT's comment,

I decided to use his suggestion, I will overrite the onbackpressed Behavior to navigate to the wanted page.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文