我正在尝试新发布的xamarin外壳。基本上,我正在尝试如何将路由映射到动态生成的页面。我注意到RegisterRoute
有一个重载,它需要一个RouteFactory
类型的对象。我为此创建了一个演示类:
class NavMan : RouteFactory
{
private readonly string title;
public NavMan(string title) : base()
{
this.title = title;
}
public override Element GetOrCreate()
{
return new ContentPage
{
Title = "tit: " + title,
Content = new Label { Text = title }
};
}
}
现在,在App.cs
中,我创建一个注册演示路线:
Routing.RegisterRoute("batman", new NavMan("I am batman"));
我尝试了几种设置Shell
对象的方法。我通常会得到钝的空指针,并且需要猜测要更改的内容。
到目前为止,我的App
类的构造函数具有以下代码:
var sea = new Shell();
var theItem = new FlyoutItem
{
IsEnabled = true,
Route = "batman"
};
sea.Items.Add(theItem);
sea.CurrentItem = theItem;
MainPage = sea;
这也给了我一个钝的空指针。我现在要尝试的是显示路线“ batman”的页面。即使是弹出按钮也不是必须的。
更新
虽然不是目标,但我至少使用以下内容打开了应用程序:
var sea = new Shell();
Routing.RegisterRoute("batman", new NavMan("I am batman"));
var theItem = new ShellContent {
Title = "hello 20",
Route = "batman2",
Content = new ContentPage {
Content = new Button {
Text = "Something shown",
Command = new Command(async () => await Shell.Current.GoToAsync("//batman"))
}
}
};
sea.Items.Add(theItem);
sea.CurrentItem = theItem;
MainPage = sea;
单击按钮后,它现在向我显示以下异常,并且从不调用GetOrCreate
函数。
System.Exception:<超时超过了获取异常详细信息>
更新3
基本上,我正在寻找一种将路由绑定到ShellContent的方法,使其仅显示我提到的route属性,并在该路由中显示一个页面。我需要提及一条路线并提及该页面的内容模板是没有意义的。该路线已映射到页面。