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()的主要内容,如果未能解决你的问题,请参考以下文章

.NET MAUI实战 Routing

调用 await browser.close() 时出错:(节点:4960)UnhandledPromiseRejectionWarning:page.goto:导航失败,因为页面已关闭

[MAUI]模仿Chrome下拉标签页的交互实现

.NET MAUI Preview7 状态预览(8月)

MAUI 项目,无法添加新页面

让MAUI页面继承表单自定义基类