2012-04-04 44 views
10

Tôi không quen với việc sử dụng trình xử lý sự kiện và tôi đã tự hỏi liệu có ai có thể đưa tôi đến một số mã cho biết cách sử dụng trình xử lý sự kiện sẽ thực thi mã trên sự kiện Đóng/Đóng không ?Thực hiện mã khi một WPF đóng

Tôi biết điều này có thể được thực hiện vì điều này đã trả lời câu hỏi:

Run code on WPF form close

Nhưng tôi cần một số hướng.

Cảm ơn bạn =)

+0

Xem tại đây và sử dụng 'OnExit' thay vì' OnStartup'. http://manaspatnaik.com/blog/index.php/technology/wpf/event-handling-in-wpf/193 – mydogisbox

Trả lời

30

Nó chỉ là XAML này

<Window ... Closing="Window_Closing" Closed="Window_Closed"> 
    ... 
</Window> 

và mã cho cả ClosingClosed sự kiện

private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) 
{ 
    ... 
} 

private void Window_Closed(object sender, EventArgs e) 
{ 
    .... 
} 
+0

Cảm ơn bạn !! Điều này được nhiều người đánh giá cao. Kiểm tra! – Stylzs05

0

Bạn có thể ghi đè lên các chức năng OnExit trong App.Xaml.cs như thế này:

/// <summary> 
/// Interaction logic for App.xaml 
/// </summary> 
public partial class App : Application 
{ 
    protected override void OnExit(ExitEventArgs e) 
    { 
     //do your things 
     base.OnExit(e); 
    } 
} 
+0

Phương thức "OnExit()" không hiển thị trong phần intellisense và tôi biết rằng tôi đã sử dụng đúng tuyên bố vì MSDN nói nó trong không gian tên System.Windows. Ý tưởng nào? – Stylzs05

0
bài viết

Josh Smith về MVVM có một ví dụ tốt đẹp của ViewModels là một phần của một không gian làm việc và phải làm gì khi đóng cửa. Kiến trúc này có thể được mở rộng vượt ra ngoài chỉ cửa sổ của bạn bị đóng cửa, nhưng dọn dẹp ViewModels vv

Josh Smith MVVM example

Trong hình 7, ông mô tả các tình huống mà bạn đang nói về. Hi vọng điêu nay co ich!

18

Nếu bạn muốn làm điều đó tất cả các từ mã sau đặt này trong cửa sổ của bạn cs tập tin

namespace WpfApplication1 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 

      this.Closed += new EventHandler(MainWindow_Closed); 
     } 

     void MainWindow_Closed(object sender, EventArgs e) 
     { 
      //Put your close code here 
     } 
    } 
} 

Nếu bạn muốn tham gia vào xaml và một phần mã sau của mình trong XAML

<Window x:Class="WpfApplication1.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525" Closed="MainWindow_Closed"> 
    <Grid> 

    </Grid> 
</Window> 

và điều này trong cs

namespace WpfApplication1 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 
     } 

     void MainWindow_Closed(object sender, EventArgs e) 
     { 
      //Put your close code here 
     } 
    } 
} 

ở trên để ví dụ bạn có thể áp dụng cho dưới mọi hình thức trong một ứng dụng XAML. Bạn có thể có nhiều biểu mẫu. Nếu bạn muốn áp dụng mã cho toàn bộ quá trình thoát ứng dụng, hãy sửa đổi tệp app.xaml.cs của bạn thành

namespace WpfApplication1 
{ 
    /// <summary> 
    /// Interaction logic for App.xaml 
    /// </summary> 
    public partial class App : Application 
    { 
     protected override void OnExit(ExitEventArgs e) 
     { 
      try 
      { 
       //Put your special code here 
      } 
      finally 
      { 
       base.OnExit(e); 
      } 
     } 
    } 
} 
Các vấn đề liên quan