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