.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
相关产品推荐
相关产品推荐

