如何使用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>
答案 0 :(得分:0)
我认为您仅在ShellContent
上添加了路线,应该将其视为navigationPage中的根页面,并且不能再弹出。
尝试修改您的xaml以将route
添加到TabBar
和Tab
:
<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层次结构中的所有项目都有与之关联的路由。如果 开发人员未设置路线,该路线是在 运行。但是,不能保证生成的路由是一致的 跨不同的应用程序会话。