在使用自定义的Main函数启动应用时,应该需要做这几步:
1.去掉App.xaml的Application的starup属性。
2.右键App.xaml,属性 把生成操作改为Page。
3.如果有引入资源,需要在自己写的Main里引入资源,并且一定是在创建任何引用了Appli的资源的窗体前引入。否则,会出现,在设计窗体时,能看到资源样式,但运行时报错,找不到资源。
System.Uri resourceLocater = new System.Uri("/HelloLLLLL.PrivateAirDisk.ClientUI;component/app.xaml", System.UriKind.Relative);
System.Windows.Application.LoadComponent(App, resourceLocater);
另外,有个额外的知识点,窗体的DialogReslt的属性设置了非空值,窗体就会被认为是关闭了,比如这里, 设置DialogResult为false,没有调用Close,结果是这个LoginForm依然被关闭了,所以只有真的要关闭的时候才把结果设为true,不关闭,也不要设为false。总之非空就会关闭。
[STAThread] static void Main() { App App = new App(); App.ShutdownMode = ShutdownMode.OnMainWindowClose; System.Uri resourceLocater = new System.Uri("/HelloLLLLL.PrivateAirDisk.ClientUI;component/app.xaml", System.UriKind.Relative); System.Windows.Application.LoadComponent(App, resourceLocater); MainWindow m_MianWindow = new MainWindow(); var loginForm = new WinUserLogin(); bool? rt = loginForm.ShowDialog(); if (rt == true) { App.Run(m_MianWindow); } }