In wpf gibt es eine Möglichkeit, code auszuführen, bevor die Kontrolle entladen wird...? wie vielleicht ein entladen-Ereignis?
Brauche ich, um code auszuführen, bevor Sie eine wpf-Benutzer control entladen und Abbrechen des Entladens, wenn bestimmte Bedingungen erfüllt sind und behalten Sie die Kontrolle offen in seinem aktuellen Zustand in der ui...
Gibt es eine Möglichkeit, kann ich dies erreichen? Ich nichts mehr sehen konnte, wie das entladen-Ereignis?
Danke,
- Was ist dein Anwendungsfall? Es klingt wie Sie etwas wollen, dass funktioniert wie Fenster.Schließen das ist ein viel anders als das Abbrechen eines FrameworkElement.Entladen-Ereignis. Es gibt eine Menge geschehen rund um layout von Eltern und Geschwistern, wenn ein element entladen wird.
- Ich habe ein ähnliches problem, nur für den Fall, Sie können mir helfen, stackoverflow.com/questions/5310724/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Unloaded
wird ausgelöst, wenn das Steuerelement entfernt wird aus der WPF visual tree. Soweit ich das habe Lesen können, es gibt keinen "Entladen" - Ereignis, wie es ist, glaube ich, in Windows-Forms. Aber, "Entladen" bedeutet nicht, dass das Steuerelement zerstört wird, nur, dass es entfernt von der visual tree.Halten eine Referenz auf das Steuerelement in einem separaten Ort in Ihrem code, zusammen mit ein wenig von Metadaten zu den übergeordneten Steuerung. Sie können wahrscheinlich sammeln die Metadaten, die durch das speichern einer Referenz auf die
Parent
Eigenschaft in IhremInitialized
event-handler.Dann, wenn
Unloaded
heißt, machen Sie Ihre tests in derUnloaded
event-handler, und wenn Ihre Bedingungen erfüllt sind, legen Sie die re-Kontrolle in der logischen Struktur. DieContentControl
Klasse eine expliziteAddChild
geschützte Methode, die Sie anrufen könnte.Gibt es wahrscheinlich einige Nebenwirkungen zu achten; Laut der Dokumentation
Unloaded
wird aufgerufen, wenn die themes geändert werden, auf OS-Ebene, wenn die WPF visual tree rekonstruiert sich selbst.Es ist ein Entladen event-System.Windows.Controls.Kontrolle, aber ich weiß nicht, ein eleganter Weg, um stop-entladen-Kontrolle mit ihm.
Wenn ConditionsMet das Entladen-Ereignis wird auf true gesetzt werden fortan halten Sie Ihre Steuern in der VisualTree - Ihre Steuern nicht Entladen