Führen Sie Code aus, wenn eine WPF geschlossen wird

Ich bin nicht mit der Verwendung von Ereignishandlern vertraut, und ich habe mich gefragt, ob mich jemand an einen Code weiterleiten kann, der zeigt, wie ein Ereignishandler verwendet wird, der Code für das Ereignis Close / Closed ausführt.

Ich weiß, dass dies aufgrund der beantworteten Frage möglich ist:

Führen Sie den Code im WPF-Formular close aus

Aber ich brauche eine Richtung.

Vielen Dank =)

 mydogisbox04. Apr. 2012, 21:59
Schau hier und benutzeOnExit anstattOnStartup. manaspatnaik.com/blog/index.php/technology/wpf/…

Antworten auf die Frage(5)

Lösung für das Problem

Es ist nur diese XAML

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

und Code für beideClosing undClosed Veranstaltungen

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

private void Window_Closed(object sender, EventArgs e)
{
    ....
}
</code>

geben Sie dies in Ihre Windows-CS-Datei ein

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

Wenn Sie Teil in XAML und Teil in Code dahinter machen möchten, tun Sie dies in XAML

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

und das in .cs

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

Die obigen Beispiele können Sie auf jedes Formular in einer XAML-App anwenden. Sie können mehrere Formulare haben. Wenn Sie Code für den gesamten Anwendungs-Exit-Prozess anwenden möchten, ändern Sie die Datei app.xaml.cs entsprechend

<code>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);
            }
        }
    }
}
</code>

hat Folgendes für mich funktioniert.

In Ihrer Window.cs-Datei

<code>using System;
using System.ComponentModel;
using System.Windows.Forms;

namespace Name_Space
{
    public partial class Window : Form
    {

        public Window()
        {
            InitializeComponent();
           //...
        }

        private void Window_Load(object sender, EventArgs e)
        {
          //...
        }

        private void Window_Closed(object sender, EventArgs e)
        {
            // Your code goes here...!
        }
    }
}
</code>

Fügen Sie in Ihrer Window.Designer.cs-Datei diese Zeile der folgenden Methode hinzu

<code>    ...
        private void InitializeComponent()
        {

            ...

            // 
            // Window
            // 
            ...

            this.Closed += new System.EventHandler(this.Window_Closed); // <-- add this line
         }

    ...
</code>

<code>/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
    protected override void OnExit(ExitEventArgs e)
    {
        //do your things
        base.OnExit(e);
    }
}
</code>
 FrankM17. Okt. 2018, 11:18
Genau das, was ich brauchte. @Stylzs05: Es ist eine alte Frage, aber für diejenigen, die hierher kommen: Intellisense setzt ein, wenn Sie schreibenprotected override  die Methode deklarieren.
 Stylzs0504. Apr. 2012, 22:26
Die "OnExit ()" - Methode wird im Intellisense nicht angezeigt, und ich weiß, dass ich die richtige using-Anweisung habe, da MSDN angibt, dass sie sich im System.Windows-Namespace befindet. Irgendwelche Ideen?

els, die Teil eines Arbeitsbereichs sind und zeigen, was in Kürze zu tun ist. Diese Architektur kann erweitert werden, indem Sie nicht nur Ihr Fenster schließen, sondern auch ViewModels usw. bereinigen.

Josh Smith MVVM Beispiel

In Abbildung 7 beschreibt er die Situation, über die Sie sprechen. Hoffe das hilft!

Ihre Antwort auf die Frage