xamarin shell:动态生成路由页面

时间:2019-05-28 07:20:33

标签: xamarin.forms xamarin.forms.shell

我正在尝试新发布的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属性,并在该路由中显示一个页面。我需要提及一条路线并提及该页面的内容模板是没有意义的。该路线已映射到页面。

0 个答案:

没有答案