Xamarin使用Route形成Shell导航

时间:2019-06-28 03:59:13

标签: xamarin xamarin.forms

如何使用XAML中定义的路由进行导航... 我想从“即将到来”导航到“ servicedetail”路线。到目前为止,我已经可以使用以下内容进行导航,但是在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>

1 个答案:

答案 0 :(得分:0)

我认为您仅在ShellContent上添加了路线,应该将其视为navigationPage中的根页面,并且不能再弹出。

尝试修改您的xaml以将route添加到TabBarTab

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

并通过以下方法导航到页面servicedetail1

await Shell.Current.GoToAsync($"//tabbarTest/TabTest/servicedetail?param={serviceDetail.Id}");

如果要转到servicedetail2

await Shell.Current.GoToAsync($"//tabbarTest/TabTest/servicedetai2?param={serviceDetail.Id}");

阅读有关navigation#register-routes的文档,以了解其工作原理。

  

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