【MAUI】页面导航-await Shell.Current.GoToAsync()与Navigation.PushAsync()
[删除(380066935@qq.com或微信通知)]
更好的阅读体验请查看原文:https://blog.csdn.net/david_520042/article/details/128177371
await Shell.Current.GoToAsync()
Shell.Current.GoToAsync(".."); // 导航到前一页
Shell.Current.GoToAsync(nameof(NotePage)); // 导航到Note页
Shell.Current.GoToAsync($"{nameof(NotePage)}?{nameof(NotePage.ItemId)}={Value}"); // 导航到Note页并给Note页的ItemId变量赋值,需要标识NotePage类,如下两行
// [QueryProperty(nameof(ItemId), nameof(ItemId))]
// public partial class NotePage : ContentPage
注:需要在AppShell.cs的public AppShell()方法中注册此页面Routing.RegisterRoute(nameof(NotePage), typeof(NotePage)); // 注册页面 示例: ## Navigation.PushAsync() ```csharp await Navigation.PushAsync(new HelloXamlPage()); ``` ## 路由:(shell中配置)
Routing.RegisterRoute(nameof(TodoItemPage), typeof(TodoItemPage));
绝对路由
导航可以通过指定一个有效的绝对 URI 作为 GoToAsync 方法的参数来执行:
await Shell.Current.GoToAsync("//animals/monkeys");
本例导航到 monkeys 路由的页面,该路由在 ShellContent 对象上定义。 表示 monkeys 路由的 ShellContent 对象是其路由为 animals 的 FlyoutItem 对象的子对象。
相对路由
导航还可以通过指定一个有效的相对 URI 作为 GoToAsync 方法的参数来执行。 路由系统会尝试将 URI 匹配到 ShellContent 对象。 因此,如果应用中的所有路由都是唯一的,则只能通过将唯一路由名称指定为相对 URI 来执行导航。
支持下列相对路由格式:
route 将从当前位置向上搜索路由层次结构来获取指定的路由。 匹配的页面将被推送到导航堆栈。
/route 将在指定路由中从当前位置向下搜索路由层次结构。 匹配的页面将被推送到导航堆栈。
//route 将从当前位置向上搜索路由层次结构来获取指定的路由。 匹配的页面将替换导航堆栈。
///route 将从当前位置向下搜索路由层次结构来获取指定的路由。 匹配的页面将替换导航堆栈。
await Shell.Current.GoToAsync("monkeydetails");
上下文导航
向后导航
向后导航可以通过将“…”指定为 GoToAsync 方法的参数来执行:
await Shell.Current.GoToAsync("..");
通过“…”执行的向后导航还可与路由结合使用:
await Shell.Current.GoToAsync("../route");