在Xamarin.Forms中,我在AppShell.xaml中使用以下路由声明:
在 AppShell.xaml.cs 中,我为 工具箱 页面添加了一个上下文页面导航。
当我尝试从工具箱页面显示上下文页面导航时:
await Shell.Current.GoToAsync("//Main/Toolbox/TBOuvriers");
我遇到了这个异常:
Shell.Current.CurrentItem:"Title = Toolbox,Route = Main"
Shell.Current.CurrentState.Location:" { //Main/Toolbox}"
这似乎是期望的。
如果我尝试使用此调用显示页面:
await Shell.Current.GoToAsync("TBOuvriers");
我还会收到异常:System.Exception:超时获取异常详情
那么问题出在哪里?
那些路线是从哪里来的?!?
为什么工具箱页面注册了2次?
欢迎提出任何想法!
最好的问候
<FlyoutItem Title = "Toolbox"
FlyoutDisplayOptions="AsMultipleItems"
Route="Main">
<ShellContent Title = "Toolbox"
ContentTemplate="{DataTemplate Views:Toolbox}"
Route="Toolbox"/>
</FlyoutItem>
<ShellContent Title = "Parameters"
ContentTemplate="{DataTemplate Views:Parameters}"
Route="Parameters"/>
在 AppShell.xaml.cs 中,我为 工具箱 页面添加了一个上下文页面导航。
public AppShell ()
{
InitializeComponent ();
Routing.RegisterRoute("Toolbox/TBOuvriers", typeof(TBOuvriers));
BindingContext = this;
}
当我尝试从工具箱页面显示上下文页面导航时:
await Shell.Current.GoToAsync("//Main/Toolbox/TBOuvriers");
我遇到了这个异常:
在调用之前,我可以看到Shell变量的这些值:System.ArgumentException: 匹配到模糊路由://Main/Toolbox/TBOuvriers,找到以下匹配项:
//Main/Toolbox/TBOuvriers/TBOuvriers,
//Main/IMPL_Toolbox/Toolbox/TBOuvriers
参数名称:uri
Shell.Current.CurrentItem:"Title = Toolbox,Route = Main"
Shell.Current.CurrentState.Location:" { //Main/Toolbox}"
这似乎是期望的。
如果我尝试使用此调用显示页面:
await Shell.Current.GoToAsync("TBOuvriers");
我还会收到异常:System.Exception:超时获取异常详情
那么问题出在哪里?
那些路线是从哪里来的?!?
为什么工具箱页面注册了2次?
欢迎提出任何想法!
最好的问候
"Routing.RegisterRoute("monkeydetails", typeof(MonkeyDetailPage));"
而不是"Routing.RegisterRoute("monkey/details", typeof(MonkeyDetailPage));"
。 为什么?应该更容易从每个动物页面调用 "await Shell.Current.GoToAsync("details");" 而不是 *"await Shell.Current.GoToAsync($"{state.Location}/{destinationRoute}?name={animalName}");"*。 - Belight