MAUI NavigationStack异常:返回再进入时page2为何残留栈中?
MAUI AppShell 导航栈残留页面问题排查
背景信息
- 重写AppShell的
OnNavigating与OnNavigated方法,用于导航拦截与状态记录 - 所有页面继承自
BaseContentPage,监听页面导航生命周期事件 - 通过
DebuggingOutput工具输出导航栈的实时状态 - 测试代码仓库为MauiArtefacts
测试场景与结果
测试案例1(正常)
在//logon与//page1之间往返导航,日志显示导航栈状态符合预期,无异常页面残留。
测试案例2(异常)
- 从
//logon导航至//page1 - 在
page1中推入page2(此时导航栈为logon → page1 → page2) - 导航返回
//logon(按MAUI文档描述,使用//route格式的导航应替换整个导航栈,此时栈内应仅保留logon) - 再次从
//logon进入//page1时,出现以下异常:- 导航栈中仍残留
page2实例 page2的Appearing与Disappearing事件被触发- 最终导航目标变为
//page1/page2,完全违背文档描述的导航行为
- 导航栈中仍残留
疑问
为什么page2会作为残留页面保留在导航栈中?是否遗漏了MAUI导航系统的某些关键机制?
内容的提问来源于stack exchange,提问作者Arthur Rey
相关产品推荐
相关产品推荐

