Cieszę się, że dostałeś odpowiedź, ale dla dobra innych odpowiem również na twoje pytanie, aby dodać trochę informacji.
Krok 1
Po pierwsze, jeśli chcesz, aby program kończył pracę po zamknięciu okna głównego, musisz to określić, ponieważ nie jest to WinForms, w którym to zachowanie jest domyślne.
(Domyślnie w WPF jest zamknięcie ostatniego okna)
W kodzie
Przejdź do wystąpienia aplikacji w punkcie wejścia (w programie WPF VS 2012 wartość domyślna jest zagnieżdżona w środku App.xaml
, więc przejdź do niego i przejdź do App.xaml.cs
i utwórz konstruktor).
W konstruktorze określić, że Application
„s ShutdownMode
powinno być ShutdownMode
. OnLastWindowClose
.
public App()
{
ShutdownMode = ShutdownMode.OnLastWindowClose;
}
W XAML
Przejdź do App.xaml
pliku, który VS 2012 domyślnie utworzone (lub utwórz go samodzielnie) Korzeń jest Application
określić wewnątrz, że Application
„s ShutdownMode
powinno być 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">
Jeśli to zadziała, gotowe; możesz przestać czytać.
Krok 2
Jeśli powyższe nie zadziałało (myślę, że napisałeś aplikację WPF od zera), główne okno prawdopodobnie nie jest znane aplikacji jako główne. Więc to też określ.
W kodzie
Przejdź do konstruktora aplikacji, tak jak w kroku 1, i określ to Application
. MainWindow
wartość to Window
:
MainWindow = mainWindow;
W XAML
Przejdź do Application
kodu XAML, tak jak w kroku 1, i określ to Application
. MainWindow
wartość to Window
:
MainWindow = "mainWindow";
Alternatywny
Nie sądzę, że jest to najlepsze podejście, tylko dlatego, że WPF nie chce, aby to zrobić (a więc ma Application
„s ShutdownMode
), ale można po prostu użyć zdarzenie / nadpisać metodę zdarzeń (OnEventHappened).
Przejdź do pliku związanego z kodem MainWindow i dodaj:
protected override void OnClosed(EventArgs e)
{
base.OnClosed(e);
App.Current.Shutdown();
}