In your MainWindow.xaml.cs
,尝试这样做:
protected override void OnClosed(EventArgs e)
{
base.OnClosed(e);
Application.Current.Shutdown();
}
根据此链接,您还可以设置ShutdownMode
在 XAML 中:
http://msdn.microsoft.com/en-us/library/system.windows.application.shutdownmode.aspx http://msdn.microsoft.com/en-us/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
to OnLastWindowClose
,当应用程序中的最后一个窗口关闭时,Windows Presentation Foundation (WPF) 会隐式调用 Shutdown,即使当前实例化的任何窗口都设置为主窗口(请参阅 MainWindow)。
A ShutdownMode
of OnMainWindowClose
导致 WPF 在 MainWindow 关闭时隐式调用 Shutdown,即使当前打开了其他窗口。
某些应用程序的生命周期可能不依赖于主窗口或最后一个窗口何时关闭,或者可能根本不依赖于窗口。对于这些场景,您需要设置ShutdownMode
财产给OnExplicitShutdown
,这需要明确的Shutdown
方法调用来停止应用程序。否则,应用程序将继续在后台运行。
ShutdownMode
可以通过 XAML 以声明方式进行配置,也可以通过代码以编程方式进行配置。
该属性仅在创建该线程的线程中可用Application
object.
在您的情况下,应用程序没有关闭,因为您可能正在使用默认值OnLastWindowClose
:
如果你设置ShutdownMode
to OnLastWindowClose
,当应用程序中的最后一个窗口关闭时,WPF 会隐式调用 Shutdown,即使当前实例化的任何窗口都设置为主窗口(请参阅MainWindow
).
由于您打开一个新窗口,而不是关闭它,因此不会调用 shutdown 。