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