c# - 应用程序主窗口,它的主要用途是什么?

标签 c# wpf mvvm

我有一个具有用于登录的启动窗口的应用程序,如果登录正确,它将打开该应用程序的主窗口。

登录正确后,我将以这种方式打开新窗口(我正在使用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/

相关文章:

java - NotifyChange 依赖messageBox点击ZK

c# - 对象初始值设定项中的属性分配不被视为与 C# 6 中的自动属性处于同一级别

C# 对象列表,如何获取属性的总和

c# - Excel-DNA:取消注册正在运行的 Excel 实例中的方法

wpf - 为什么不刷新 ICollectionView?

c# - 当 child 发生变化时更新 parent

c# - MVVM无法在主页上显示默认用户控件

silverlight - 动态子用户控件MVVM

c# - 如何为给定示例制定正则表达式

c# - 如何将控件的属性绑定(bind)到另一个控件的属性?