Я рад, что вы получили свой ответ, но ради других я также отвечу на ваш вопрос, чтобы добавить некоторую информацию.
Шаг 1
Во-первых,если вы хотите, чтобы ваша программа закрывалась при закрытии главного окна, вам нужно указать, так как это не WinForms, где это поведение по умолчанию.
(По умолчанию в WPF закрывается последнее окновниз)
В коде
Перейдите к экземпляру приложения в точке входа (в программе WPF VS 2012 по умолчанию вложено в App.xaml
, поэтомуперейдите внутрь и перейдите к App.xaml.cs
и создайте конструктор).
В конструкторе укажите, что ваши Application
ShutdownMode
должно быть ShutdownMode
. OnLastWindowClose
.
public App()
{
ShutdownMode = ShutdownMode.OnLastWindowClose;
}
В XAML
Перейти к вашему App.xaml
файлу, которыйVS 2012 создан по умолчанию (или создайте его самостоятельно). Корень - 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
Goк Application
XAML, как вы делали на шаге 1, и укажите, что значение Application
. MainWindow
является вашим Window
:
MainWindow = "mainWindow";
Альтернатива
Я не думаю, что это лучший подход, просто потому, что WPF не хочет, чтобы вы это делали (поэтому он имеет Application
ShutdownMode
), но вы можете просто использовать событие / переопределить метод события (OnEventHappened).
Перейдите в файл кода MainWindow и добавьте:
protected override void OnClosed(EventArgs e)
{
base.OnClosed(e);
App.Current.Shutdown();
}