很高兴你找到了答案,但为了其他人着想,我也会回答你的问题并添加一些信息。
步骤1
首先,如果您希望程序在主窗口关闭时退出,则需要指定此行为,因为这不是 WinForms 的默认行为(WPF 中的默认设置是当最后一个窗口关闭时)。
(WPF 中的默认设置是当最后一个窗口关闭时)
在代码中
进入您的应用程序实例所在的入口点(在 VS 2012 的 WPF 程序中,默认嵌套在 App.xaml
中,因此请进入其中并导航至 App.xaml.cs
并创建构造函数)。
在构造函数中指定您的 Application
的ShutdownMode
应为 ShutdownMode
.OnLastWindowClose
。
public App()
{
ShutdownMode = ShutdownMode.OnLastWindowClose;
}
在 XAML 中
打开默认情况下 VS 2012 创建的 App.xaml
文件(或自己创建),
根节点是一个 Application
,在里面指定你的 Application
的 ShutdownMode
应该是 ShutdownMode
.OnLastWindowClose
。
<Application x:Class="WpfApplication27.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml"
ShutdownMode="OnMainWindowClose">
如果它起作用了,那么你就完成了;可以停止阅读。
步骤2
如果上面的方法不起作用(我猜你是从头开始编写WPF应用程序),主窗口可能不为应用程序所知道。
因此也要指定它。
在代码中
像第1步一样,进入应用程序的构造函数,并指定 Application
.MainWindow
的值是你的Window
:
MainWindow = mainWindow;
XAML中的设置:
在第一步中所做的方式,转到Application
XAML,并指定 Application
.MainWindow
的值为您的Window
:
MainWindow = "mainWindow";
替代方案
我认为这不是最佳的方法,只是因为WPF并不希望你这样做(所以它有 Application
的 ShutdownMode
),但你可以使用一个事件/覆盖一个事件方法(OnEventHappened)。
进入 MainWindow 的代码后台文件并添加:
protected override void OnClosed(EventArgs e)
{
base.OnClosed(e);
App.Current.Shutdown();
}
Application.Current.Shutdown()
将立即关闭应用程序,就像在任务栏上结束进程一样。这就像在他说最后一句话之前就开枪打死了他 :)..我不建议这样做。 - Vural