在您的中MainWindow.xaml.cs
,尝试执行以下操作:
protected override void OnClosed(EventArgs e)
{
base.OnClosed(e);
Application.Current.Shutdown();
}
通过此链接,您还可以ShutdownMode
在XAML中设置:
http://msdn.microsoft.com/zh-CN/library/system.windows.application.shutdownmode.aspx
<Application
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml"
ShutdownMode="OnExplicitShutdown"
>
</Application>
仅当调用的Shutdown
方法时,应用程序才会停止运行Application
。根据ShutdownMode
属性值的指定,关闭可以隐式或显式进行。
如果设置ShutdownMode
为OnLastWindowClose
,则Windows Presentation Foundation(WPF)将在应用程序中的最后一个窗口关闭时隐式调用Shutdown,即使将任何当前实例化的窗口设置为主窗口(请参见MainWindow)。
一ShutdownMode
的OnMainWindowClose
原因WPF隐式调用shutdown当主窗口关闭,即使其他窗口是当前打开的。
某些应用程序的寿命可能不依赖于主窗口或最后一个窗口何时关闭,或者根本不依赖于窗口。对于这些情况,您需要将ShutdownMode
属性设置为OnExplicitShutdown
,这需要显式的Shutdown
方法调用来停止应用程序。否则,应用程序将继续在后台运行。
ShutdownMode
可以从XAML声明式配置或从代码以编程方式配置。
此属性仅在创建Application
对象的线程中可用。
就您而言,该应用无法关闭,因为您可能正在使用默认值OnLastWindowClose
:
如果设置ShutdownMode
为OnLastWindowClose
,即使应用程序中的最后一个窗口关闭,WPF也会隐式调用Shutdown,即使将任何当前实例化的窗口设置为主窗口(请参阅参考资料MainWindow
)。
由于您要打开新窗口而不关闭窗口,因此不会调用shutdown。