我有一个具有用于登录的启动窗口的应用程序,如果登录正确,它将打开该应用程序的主窗口。
登录正确后,我将以这种方式打开新窗口(我正在使用MVVM模式):
PrincipalViewModel miPrincipalViewModel = new PrincipalViewModel();
PrincipalView miPrincipalView = new PrincipalView();
miPrincipalView.DataContext = miPrincipalViewModel;
App.Current.MainWindow.DataContext = null;
App.Current.MainWindow.Close();
miPrincipalView.Show();
在这种情况下,我不会设置新的主窗口。另一个选择是此代码:
PrincipalViewModel miPrincipalViewModel = new PrincipalViewModel();
PrincipalView miPrincipalView = new PrincipalView();
miPrincipalView.DataContext = miPrincipalViewModel;
App.Current.MainWindow.DataContext = null;
App.Current.MainWindow.Close();
App.Current.MainWindow = miPrincipalView;
miPrincipalView.Show();
在第二种情况下,我将主窗口属性设置为应用程序的主窗口,因为登录窗口已关闭。
但是我在两种情况下都没有看到任何区别,所以我想知道MainWindow到底是什么,以及它的用途和含义。
谢谢你。
最佳答案
在第一种情况下,您不再具有实际的MainWindow,但这应该不是问题,除非您依靠Application.Current.MainWindow
属性返回对应用程序中某个窗口的有效引用,或者将Application.ShutdownMode属性设置为OnMainWindowClose
。
默认值为OnLastWindowClose
,这意味着无论如何关闭新窗口时,您的应用程序都将按预期关闭。
正如MSDN上的文档所述:“某些应用程序的生存期可能不取决于主窗口或最后一个窗口的关闭时间,也可能根本不取决于窗口。”
关于c# - 应用程序主窗口,它的主要用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44044677/