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

.NET Maui中如何从ContentPage后台导航至TabbedPage?

解决MAUI中从MainPage导航到TabbedPage的问题

问题原因分析

你遇到的两个问题本质都是MainPage未处于Navigation导航栈中,导致Navigation属性为null:

  • 方法一的错误描述不准确:PushAsync接受所有Page子类(包括TabbedPage),并非只能传ContentPage,真正的问题是Navigation对象为空,无法调用PushAsync。
  • 方法二的空引用错误,同样是因为Navigation属性为null,此时无论包裹什么页面都会报错;另外,TabbedPage作为导航容器,不需要再用NavigationPage嵌套,这种嵌套本身不符合MAUI的导航规范。

正确解决方案

步骤1:确保App的根页面是NavigationPage

打开App.xaml.cs,将MainPage包裹在NavigationPage中,这样MainPage就会加入导航栈,Navigation属性不再为null:

namespace MauiApp1;

public partial class App : Application
{
    public App()
    {
        InitializeComponent();
        // 将MainPage作为NavigationPage的根页面
        MainPage = new NavigationPage(new MainPage());
    }
}

步骤2:直接使用PushAsync导航到TabbedPage

在MainPage的按钮点击事件中,直接实例化TabbedPage并调用PushAsync即可:

private async void Button_Clicked(object sender, EventArgs e)
{
    await Navigation.PushAsync(new NewPage2());
}

额外检查点

  • 确认NewPage1页面已正确创建,且命名空间MauiApp1无误,否则TabbedPage初始化时会抛出异常,导致导航失败。
  • 避免将TabbedPage嵌套在NavigationPage中,这种嵌套会导致导航结构混乱,不符合MAUI的设计逻辑。

内容的提问来源于stack exchange,提问作者the_yaz2000

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 02:18:11