WinUI 3 窗口间导航实现:主窗口跳转至登录窗口
WinUI 3实现主窗口跳转至登录窗口的方法
针对你的需求,下面提供两种常用实现方式,代码直接可用:
方式1:打开登录窗口并隐藏主窗口
这种方式适合登录完成后需要回到主窗口的场景:
- 先在项目里添加LoginWindow(右键项目→添加→新项→WinUI 3窗口)
- 在MainWindow的XAML里给登录按钮绑定点击事件:
<Button Content="Login" Click="LoginButton_Click"/>
- 在MainWindow.xaml.cs里实现点击逻辑:
private void LoginButton_Click(object sender, RoutedEventArgs e) { // 创建登录窗口实例 var loginWindow = new LoginWindow(); // 显示登录窗口 loginWindow.Activate(); // 隐藏主窗口 this.Hide(); // 可选:登录窗口关闭时自动恢复显示主窗口 loginWindow.Closed += (_, __) => this.Show(); }
方式2:激活已有登录窗口并禁用主窗口
如果希望登录窗口只创建一次,点击按钮时直接激活它并锁定主窗口:
- 在MainWindow类里先声明一个全局的登录窗口变量:
private LoginWindow _loginWindow;
- 实现按钮点击事件:
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
相关产品推荐
相关产品推荐

