Xamarin使用Route形成Shell导航

Xamarin使用Route形成Shell导航,xamarin,xamarin.forms,Xamarin,Xamarin.forms,如何使用XAML中定义的路线导航。。。 我想从“即将到来”路线导航到“服务详细信息”路线。到目前为止,我已经能够使用下面的导航,但是在servicedetail页面上看不到后退按钮(在屏幕上)。每次我点击后退按钮(物理后退按钮),它就会关闭应用程序 await Shell.Current.GoToAsync($"//servicedetail?param={serviceDetail.Id}"); 这就是我到目前为止设置页面的方式 <FlyoutItem Title="Unison"

如何使用XAML中定义的路线导航。。。 我想从“即将到来”路线导航到“服务详细信息”路线。到目前为止,我已经能够使用下面的导航,但是在servicedetail页面上看不到后退按钮(在屏幕上)。每次我点击后退按钮(物理后退按钮),它就会关闭应用程序

await Shell.Current.GoToAsync($"//servicedetail?param={serviceDetail.Id}"); 
这就是我到目前为止设置页面的方式

<FlyoutItem Title="Unison" Route="main"
            FlyoutDisplayOptions="AsSingleItem">
    <Tab Title="My Services" Icon="icon.png">
        <ShellContent Title="Upcoming" Route="upcoming" ContentTemplate="{DataTemplate local:UpcomingServicePage}" />

        <ShellContent Title="Past" ContentTemplate="{DataTemplate local:PastServicePage}" />

    </Tab>


</FlyoutItem>
<TabBar>
    <Tab>
        <ShellContent Route="servicedetail"
              Title="Team" 
              Icon="info.png"
              ContentTemplate="{DataTemplate local:ServiceDetailPage}" />

        <ShellContent Route="servicedetail2"
              Title="Songlist"
              Icon="info.png"
              ContentTemplate="{DataTemplate local:ServiceDetailPage}" />

    </Tab>
</TabBar>

我认为您只是在
ShellContent
上添加路由,它应该被视为导航页面中的根页面,您不能再弹出

尝试修改xaml以将
路由
添加到
选项卡
选项卡

<TabBar Route="tabbarTest">
    <Tab Route="TabTest">
        <ShellContent Route="servicedetail"
          Title="Team" 
          Icon="info.png"
          ContentTemplate="{DataTemplate local:ServiceDetailPage}" />

        <ShellContent Route="servicedetail2"
          Title="Songlist"
          Icon="info.png"
          ContentTemplate="{DataTemplate local:ServiceDetailPage}" />

    </Tab>
</TabBar>
如果要转到
服务详情2

await Shell.Current.GoToAsync($"//tabbarTest/TabTest/servicedetai2?param={serviceDetail.Id}");
阅读文档了解其工作原理

Shell层次结构中的所有项都有一个与之关联的路由。如果 路由不是由开发人员设置的,路由是在 运行时。但是,生成的路由不能保证一致 跨不同的应用程序会话


我认为您只是在
ShellContent
上添加路由,它应该被视为导航页面中的根页面,您不能再弹出

尝试修改xaml以将
路由
添加到
选项卡
选项卡

<TabBar Route="tabbarTest">
    <Tab Route="TabTest">
        <ShellContent Route="servicedetail"
          Title="Team" 
          Icon="info.png"
          ContentTemplate="{DataTemplate local:ServiceDetailPage}" />

        <ShellContent Route="servicedetail2"
          Title="Songlist"
          Icon="info.png"
          ContentTemplate="{DataTemplate local:ServiceDetailPage}" />

    </Tab>
</TabBar>
如果要转到
服务详情2

await Shell.Current.GoToAsync($"//tabbarTest/TabTest/servicedetai2?param={serviceDetail.Id}");
阅读文档了解其工作原理

Shell层次结构中的所有项都有一个与之关联的路由。如果 路由不是由开发人员设置的,路由是在 运行时。但是,生成的路由不能保证一致 跨不同的应用程序会话


当你说看不到按钮时,你是如何点击后退按钮的?你实施了这个计划吗?当应用程序关闭时,是否有任何错误?你能分享stacktrace吗?嘿@JackHua MSFT,我在屏幕上没有看到后退按钮。我指的后退按钮是Android上的物理后退按钮。你能回答我的另外两个问题吗?这里还有官方示例:应用程序关闭时没有错误。行为与没有更多页面可返回一样,因此closesi浏览了Xaminals示例。基本上,我想做一个类似于Xaminals中的“MonkeyStail”页面路由。但是在这个细节页面上,我想要一个选项卡栏导航。我需要回到使用选项卡式页面吗?当你说看不到按钮时,你是如何单击“后退”按钮的?你实施了这个计划吗?当应用程序关闭时,是否有任何错误?你能分享stacktrace吗?嘿@JackHua MSFT,我在屏幕上没有看到后退按钮。我指的后退按钮是Android上的物理后退按钮。你能回答我的另外两个问题吗?这里还有官方示例:应用程序关闭时没有错误。行为与没有更多页面可返回一样,因此closesi浏览了Xaminals示例。基本上,我想做一个类似于Xaminals中的“MonkeyStail”页面路由。但是在这个细节页面上,我想要一个选项卡栏导航。我需要重新使用选项卡页吗?尝试过这个,但仍然是一样的。。。我猜应用程序关闭,因为它正试图从servicedetail>tabtest>Tabbertest返回。。。实际上不是一页。我希望我能从servicedetail>main>Combing返回,但那是完全不同的route@AmitPhilips因此,您希望单击弹出式菜单中的“即将到来”并转到servicedetail。然后你希望在servicedetail上有一个返回按钮,可以返回到包含两个选项卡的detailPage?是的,我在UpcomingServicePage上有一个列表。如果我点击其中一个项目,它需要将我重定向到ServiceDetailPage。点击back/back按钮,我想重定向回UpcomingServicePage上的列表。我之所以将ServiceDetailPage作为shell xaml页面的一部分,是因为该功能而不是使用选项卡式页面。将TabbedPage与Shell一起使用会导致页面扭曲尝试过这一点,但仍然是一样的。。。我猜应用程序关闭,因为它正试图从servicedetail>tabtest>Tabbertest返回。。。这实际上不是一页。我希望我能从servicedetail>main>Combing返回,但那是完全不同的route@AmitPhilips因此,您希望单击弹出式菜单中的“即将到来”并转到servicedetail。然后你希望在servicedetail上有一个返回按钮,可以返回到包含两个选项卡的detailPage?是的,我在UpcomingServicePage上有一个列表。如果我点击其中一个项目,它需要将我重定向到ServiceDetailPage。点击back/back按钮,我想重定向回UpcomingServicePage上的列表。我之所以将ServiceDetailPage作为shell xaml页面的一部分,是因为该功能而不是使用选项卡式页面。将TabbedPage与Shell一起使用会导致页面失真