Оболочка xamarin: динамически генерирует страницы для маршрутов - PullRequest
0 голосов
/ 28 мая 2019

Я пробовал недавно выпущенную оболочку ксамарина.Я пытаюсь сопоставить маршрут с динамически генерируемой страницей.Я заметил, что 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;

Это дает мне тупое нульуказатель тоже.Все, что я сейчас пытаюсь - это отобразить страницу маршрута "Бэтмен".Даже выпадающий список или вкладка не являются обязательными

Обновление

Хотя я и не ставил перед собой цель, я по крайней мере получил открытие приложения со следующим:

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 таким образом, чтобы он просто отображал упоминание свойства маршрута ион отображает страницу в маршруте.Нет смысла упоминать маршрут и шаблон содержимого страницы.Маршрут уже сопоставлен со страницей.

...