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

.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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 12:23:33