一、目的:开发过程中,经常需要先显示一个登录窗口,当登录成功时显示主窗口,那么如何设置登录窗口显示的时机和顺序,本文介绍我常用的方式
二、实现
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
MainWindow mainWindow = new MainWindow();
LoginWindow loginWindow = new LoginWindow();
var r = loginWindow.ShowDialog();
if (r != true)
{
this.Shutdown();
return;
}
mainWindow.Show();
}
}
在App里面重写OnStartup方法,注意这里要先 MainWindow mainWindow = new MainWindow();,之后去显示登录窗口,其中的原因可能是App默认的ShutDownMode是OnLastWindowClose,如果不将MainWindow在之前new出来,当登录窗口关闭时就会触发OnLastWindowClose从而程序退出,OnMainWindowClose模式也是如此。
除此之外注意把App.xaml中StarupUri去掉,否者登录后会显示两个窗口
三、环境
VS2022
四、示例
五、需要了解的知识点
Application 类 (System.Windows) | Microsoft Learn
Application.ShutdownMode 属性 (System.Windows) | Microsoft Learn
Window 类 (System.Windows) | Microsoft Learn
六、源码地址
GitHub - HeBianGu/WPF-ControlDemo: 示例
GitHub - HeBianGu/WPF-ControlBase: Wpf封装的自定义控件资源库
GitHub - HeBianGu/WPF-Control: WPF轻量控件和皮肤库