.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
相关产品推荐
相关产品推荐

