.NET Maui如何关闭NewDb页面并跳转至PassInfo主页面?
在.NET Maui Shell应用中从NewDb页面切换到PassInfo页面的实现方法
针对你的场景,推荐使用.NET Maui Shell的导航机制来实现页面切换,以下是具体步骤:
1. 配置Shell页面路由
首先确保应用正确使用Shell作为主页面,并完成页面路由注册:
修改App.xaml.cs的启动逻辑
将直接设置MainPage为PassInfo的代码改为使用AppShell:
public partial class App : Application { public string _dirVal { get; set; } public App() { InitializeComponent(); MainPage = new AppShell(); // 设置Shell作为主页面 } protected override void OnStart() { base.OnStart(); var dbList = GetDB(); if (dbList.Count == 0) { // 导航到NewDb页面 Shell.Current.GoToAsync(nameof(NewDb)); } else { // 导航到PassInfo页面 Shell.Current.GoToAsync(nameof(PassInfo)); } } private List<string> GetDB() { // 你的数据库文件查找逻辑 } }
在AppShell.xaml.cs中注册路由
在AppShell的构造函数中添加页面路由注册:
public partial class AppShell : Shell { public AppShell() { InitializeComponent(); // 注册页面路由 Routing.RegisterRoute(nameof(PassInfo), typeof(PassInfo)); Routing.RegisterRoute(nameof(NewDb), typeof(NewDb)); } }
2. 处理NewDb页面的保存按钮点击
在NewDb.xaml.cs的保存按钮点击事件中,完成数据库创建后,通过Shell导航到PassInfo页面并关闭当前页面:
private async void SaveButton_Clicked(object sender, EventArgs e) { // 执行创建并保存数据库文件的逻辑 // ... // 使用绝对路由导航到PassInfo页面,自动关闭当前NewDb页面 await Shell.Current.GoToAsync($"//{nameof(PassInfo)}"); }
备选方案(不推荐)
如果暂时不想使用Shell路由,也可以直接替换应用的主页面,但这种方式会丢失Shell的导航栈管理能力:
private void SaveButton_Clicked(object sender, EventArgs e) { // 数据库创建逻辑 // ... // 直接切换主页面为PassInfo App.Current.MainPage = new PassInfo(); }
内容的提问来源于stack exchange,提问作者user22995906
相关产品推荐
相关产品推荐

