You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET MAUI:如何跳转至已浏览过的页面

解决MAUI Shell跨层级返回已浏览页面的问题

在包含MainPage、DetailsPage、AnotherPage的MAUI项目中,从AnotherPage调用Shell.Current.GoToAsync($"../{nameof(MainPage)}");直接跳转回MainPage会崩溃,本质是Shell的相对导航依赖当前页面的层级位置,而AnotherPage无法正确识别到MainPage的层级路径。

给你几个靠谱的解决办法:

  • 用绝对导航替代相对导航:直接从根路由定位目标页面,完全不依赖当前层级,代码如下:

    Shell.Current.GoToAsync($"//{nameof(MainPage)}");
    

    这种方式会自动维护导航栈,保留之前已浏览页面的状态,需要返回时正常用Back按钮就行。

  • 确保页面路由已注册:如果项目里没提前注册路由,先在AppShell.xaml.cs的构造函数里完成映射,避免路由识别失败:

    Routing.RegisterRoute(nameof(MainPage), typeof(MainPage));
    Routing.RegisterRoute(nameof(DetailsPage), typeof(DetailsPage));
    Routing.RegisterRoute(nameof(AnotherPage), typeof(AnotherPage));
    
  • 如果需要清空导航栈:要是跳转到MainPage后不想让用户再返回之前的页面,加上重置导航模式的参数:

    Shell.Current.GoToAsync($"//{nameof(MainPage)}", new Dictionary<string, object> { { "NavigationMode", NavigationMode.Reset } });
    

内容的提问来源于stack exchange,提问作者Rolf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 19:35:30