.NET Maui中Mopup弹窗内打开导航页面异常问题求助
解决.NET Maui中Mopup弹窗内导航页面不显示的问题
问题根源
Mopup弹窗的Navigation属性指向的是弹窗自身的导航栈,而非主应用的导航栈。直接调用await Navigation.PushAsync(new NewPage1())时,页面会被推送到弹窗的栈中,被弹窗遮挡无法显示;而关闭弹窗后,弹窗的导航上下文失效,自然也无法触发主页面的导航。
解决方案
需要先关闭弹窗,再使用主应用的导航上下文来推送页面。修改按钮点击事件代码如下:
private async void btnNavigation_Clicked(object sender, EventArgs e) { // 先关闭当前弹窗 await MopupService.Instance.PopAsync(); // 获取主应用的导航上下文并推送页面 if (App.Current.MainPage is NavigationPage mainNavigationPage) { await mainNavigationPage.PushAsync(new NewPage1()); } // 如果主页面直接是ContentPage且已嵌入导航栈,可直接使用以下代码 // await App.Current.MainPage.Navigation.PushAsync(new NewPage1()); }
关键说明
- 必须先关闭弹窗:弹窗作为浮层会遮挡主页面的导航栈,只有关闭弹窗后,主页面的导航操作才能正常渲染。
- 使用主应用导航上下文:通过
App.Current.MainPage获取主页面的导航实例,确保页面被推送到正确的导航栈中。
内容的提问来源于stack exchange,提问作者Yves
相关产品推荐
相关产品推荐

