.NET MAUI返回主页面后TabBar内Calendar Tab消失问题求助
问题分析
从HomePage跳转到TicketPage后返回,Intervention Tab下的Calendar选项消失,核心原因是导航路由写法错误,破坏了Shell的导航栈结构,导致Tab的子ShellContent无法正常恢复。
修复方案
1. 注册TicketPage路由
在AppShell.xaml.cs的构造函数中添加路由注册,让Shell能正确识别TicketPage:
public AppShell() { InitializeComponent(); Routing.RegisterRoute(nameof(TicketPage), typeof(TicketPage)); }
2. 修改HomePage的导航代码
你当前使用的InterventionTab/{nameof(TicketPage)}会让Shell直接替换InterventionTab的内容为TicketPage,而非在HomePage的导航栈中添加页面。改为相对路由,直接指定TicketPage即可:
// 移除InterventionTab前缀,使用相对路由跳转 await Shell.Current.GoToAsync($"{nameof(TicketPage)}?TicketID={SelectedTicket.Id}", false);
备选:使用完整绝对路由(若有需求)
如果必须使用绝对路径,需确保路径指向HomePage的子层级:
await Shell.Current.GoToAsync($"//MainTabBar/InterventionTab/HomePage/{nameof(TicketPage)}?TicketID={SelectedTicket.Id}", false);
3. 验证返回逻辑
从TicketPage返回时,使用默认返回按钮或调用await Shell.Current.GoToAsync(".."),即可回到HomePage,此时Intervention Tab下的Home和Calendar选项会正常显示。
原理说明
在.NET MAUI Shell中,Tab下的多个ShellContent属于该Tab的子导航结构。直接通过Tab路由跳转新页面会覆盖原有子ShellContent;而相对路由是在当前ShellContent(HomePage)的导航栈中添加页面,不会影响Tab的原有结构,返回时自然能恢复原来的Tab内容。
内容的提问来源于stack exchange,提问作者Jean Ivan Steven
相关产品推荐
相关产品推荐

