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

.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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 07:52:04