MAUI页面导航-await Shell.Current.GoToAsync()与Navigation.PushAsync()
Posted 厦门德仔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MAUI页面导航-await Shell.Current.GoToAsync()与Navigation.PushAsync()相关的知识,希望对你有一定的参考价值。
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");
更多内容请看官方文档
以上是关于MAUI页面导航-await Shell.Current.GoToAsync()与Navigation.PushAsync()的主要内容,如果未能解决你的问题,请参考以下文章
调用 await browser.close() 时出错:(节点:4960)UnhandledPromiseRejectionWarning:page.goto:导航失败,因为页面已关闭