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

WinUI 3 窗口间导航实现:主窗口跳转至登录窗口

WinUI 3实现主窗口跳转至登录窗口的方法

针对你的需求,下面提供两种常用实现方式,代码直接可用:

方式1:打开登录窗口并隐藏主窗口

这种方式适合登录完成后需要回到主窗口的场景:

  1. 先在项目里添加LoginWindow(右键项目→添加→新项→WinUI 3窗口)
  2. 在MainWindow的XAML里给登录按钮绑定点击事件:
<Button Content="Login" Click="LoginButton_Click"/>
  1. 在MainWindow.xaml.cs里实现点击逻辑:
private void LoginButton_Click(object sender, RoutedEventArgs e)
{
    // 创建登录窗口实例
    var loginWindow = new LoginWindow();
    // 显示登录窗口
    loginWindow.Activate();
    // 隐藏主窗口
    this.Hide();

    // 可选:登录窗口关闭时自动恢复显示主窗口
    loginWindow.Closed += (_, __) => this.Show();
}

方式2:激活已有登录窗口并禁用主窗口

如果希望登录窗口只创建一次,点击按钮时直接激活它并锁定主窗口:

  1. 在MainWindow类里先声明一个全局的登录窗口变量:
private LoginWindow _loginWindow;
  1. 实现按钮点击事件:
private void LoginButton_Click(object sender, RoutedEventArgs e)
{
    // 首次点击时创建登录窗口实例
    if (_loginWindow == null)
    {
        _loginWindow = new LoginWindow();
        // 登录窗口关闭后,恢复主窗口的可操作性并清空实例引用
        _loginWindow.Closed += (_, __) =>
        {
            _loginWindow = null;
            this.IsEnabled = true;
        };
    }

    // 把登录窗口调到前台激活
    _loginWindow.Activate();
    // 禁用主窗口的所有交互
    this.IsEnabled = false;
}

关键方法说明

  • Activate():将目标窗口置于前台并激活,确保用户能看到并操作它
  • Hide():隐藏主窗口但不销毁实例,适合后续需要恢复的场景
  • IsEnabled = false:禁用主窗口的所有控件,防止用户在登录时操作主窗口

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 03:54:27