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