Я радий, що ви отримали свою відповідь, але заради інших я також відповім на ваше запитання, щоб додати деяку інформацію.
Крок 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();
}