Tôi rất vui vì bạn đã nhận được câu trả lời của mình nhưng vì lợi ích của những người khác, tôi cũng sẽ trả lời câu hỏi của bạn để thêm một số thông tin.
Bước 1
Đầu tiên, nếu bạn muốn chương trình của mình thoát khi cửa sổ chính đóng lại, bạn cần chỉ định, vì đây không phải là WinForms nơi hành vi này được mặc định.
(Mặc định trong WPF là khi cửa sổ cuối cùng đóng lại)
Trong mã
Đi tới phiên bản ứng dụng của bạn trong điểm nhập của bạn (Trong chương trình WPF của VS 2012, mặc định được lồng vào bên trong App.xaml
, vì vậy hãy vào bên trong nó và điều hướng đếnApp.xaml.cs
& tạo một phương thức khởi tạo).
Trong constructor xác định rằng bạn Application
's ShutdownMode
nên ShutdownMode
. OnLastWindowClose
.
public App()
{
ShutdownMode = ShutdownMode.OnLastWindowClose;
}
Trong XAML
Đi tới App.xaml
file VS 2012 tạo ra theo mặc định (hoặc tạo ra nó cho mình) Gốc là một Application
, xác định bên trong của bạn Application
's ShutdownMode
nên 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">
Nếu nó hoạt động, bạn đã hoàn thành; bạn có thể ngừng đọc.
Bước 2
Nếu cách trên không hoạt động (tôi đoán bạn đã viết ứng dụng WPF từ đầu), cửa sổ chính có thể không được ứng dụng biết đến là cửa sổ chính. Vì vậy, chỉ định điều đó là tốt.
Trong mã
Đi tới hàm tạo của ứng dụng như bạn đã làm trong Bước 1 và chỉ định điều đó Application
. MainWindow
Giá trị của là của bạn Window
:
MainWindow = mainWindow;
Trong XAML
Đi tới Application
XAML như bạn đã làm ở Bước 1 và chỉ định điều đó Application
. MainWindow
Giá trị của là của bạn Window
:
MainWindow = "mainWindow";
Thay thế
Tôi không nghĩ rằng đây là cách tiếp cận tốt nhất, chỉ vì WPF không muốn bạn để làm điều này (vì vậy nó có Application
's ShutdownMode
), nhưng bạn chỉ có thể sử dụng một sự kiện / ghi đè lên một phương pháp sự kiện (OnEventHappened).
Đi tới tệp mã phía sau của MainWindow và thêm:
protected override void OnClosed(EventArgs e)
{
base.OnClosed(e);
App.Current.Shutdown();
}