2012-04-04 18 views
10

Nie jestem zaznajomiony z używaniem procedur obsługi zdarzeń i zastanawiałem się, czy ktoś miał lub mógł skierować mnie do jakiegoś kodu, który pokazuje, jak użyć obsługi zdarzeń, która wykona kod na zdarzeniu Zamknij/Zamknięte ?Wykonaj kod po zamknięciu WPF

Wiem, że to może być wykonane z tego powodu odpowiedział na pytanie:

Run code on WPF form close

Ale potrzebuję jakiś kierunek.

Dziękuję =)

+0

Spójrz tutaj i używać 'OnExit' zamiast' OnStartup'. http://manaspatnaik.com/blog/index.php/technology/wpf/event-handling-in-wpf/193 – mydogisbox

Odpowiedz

30

To właśnie ten XAML

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

i kod dla obu Closing i Closed wydarzeń

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

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

Dziękuję! Jest to bardzo doceniane. Czek! – Stylzs05

0

Można zastąpić funkcję onExit w App.Xaml.cs takiego:

/// <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

Metoda "OnExit()" nie pojawia się w intellisense i wiem, że mam prawidłowe użycie oświadczenie, ponieważ MSDN mówi, że jest w przestrzeni nazw System.Windows. Jakieś pomysły? – Stylzs05

0
artykuł

Josh Smith w sprawie MVVM ma ładny przykład ViewModels które są częścią obszar roboczy i co robić z bliska. Architektura ta może być rozszerzona poza tylko Twoje okno jest zamknięte, ale sprzątanie ViewModels itp

Josh Smith MVVM example

na rysunku 7 opisuje sytuację mówisz. Mam nadzieję że to pomoże!

18

Jeśli chcesz zrobić to z kodu za umieścić to w swoim Windows .cs pliku

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 
     } 
    } 
} 

Jeśli chcesz zrobić część w Xaml i część kodu za T jego w 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> 

i to w .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 
     } 
    } 
} 

Powyższy przykładów można zastosować do każdej postaci w aplikacji xaml. Możesz mieć wiele formularzy. Jeśli chcesz zastosować kod dla całego procesu wyjścia aplikacja zmodyfikować plik twoi app.xaml.cs do tego

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); 
      } 
     } 
    } 
} 
Powiązane problemy