如何在 Xamarin.Forms Shell 应用程序中定义以下导航层次结构?
- 导航选项卡(路线“主”)
- 带有订单列表的页面(路线“订单”)
- 一个订单的详细信息页面(路线“订单”,参数“订单ID”)
- 该特定订单的子详细信息页面 1(路线“details1”,参数“orderId”)
- 该特定订单的子详细信息页面 2(路线“details2”,参数“orderId”)
- 一个订单的详细信息页面(路线“订单”,参数“订单ID”)
- 带有订单列表的页面(路线“订单”)
只要只有order
页面而没有定义子详细信息页面,它就可以很好地工作。然后我可以通过Shell.Current.GoToAsync("//main/orders/order?orderId=5")
路由导航到该页面。
但是,当我添加子详细信息页面时(无论我是通过Routing.RegisterRoute
XAMLGoToAsync
还是System.ArgumentException: 'unable to figure out route for: //main/orders/order?orderId=5'
通过 XAML 定义层次结构:
<Tab Title="My Orders" Route="main">
<ShellContent ContentTemplate="{DataTemplate pages:OrdersListPage}" Route="orders">
<ShellContent ContentTemplate="{DataTemplate pages:OrderPage}" Route="order">
<ShellContent ContentTemplate="{DataTemplate pages:OrderDetailPage1}" Route="details1" />
<ShellContent ContentTemplate="{DataTemplate pages:OrderDetailPage2}" Route="details2" />
</ShellContent>
</ShellContent>
</Tab>
当我通过自定义路由定义它时,同样的例外:
Routing.RegisterRoute("main/orders/order", typeof(pages:OrderPage));
Routing.RegisterRoute("main/orders/order/details1", typeof(pages:OrderDetailPage1));
Routing.RegisterRoute("main/orders/order/details1", typeof(pages:OrderDetailPage1));