Objektlebensdauer-EreignisseObject Lifetime Events

In diesem Thema werden die spezifischen WPFWPF-Ereignisse beschrieben, die die Phasen einer Objektlebensdauer darstellen (Erstellung, Verwendung und Zerstörung).This topic describes the specific WPFWPF events that signify stages in an object lifetime of creation, use, and destruction.

VorraussetzungenPrerequisites

In diesem Thema wird vorausgesetzt, dass Sie sich mit Abhängigkeitseigenschaften aus Sicht von vorhandenen Abhängigkeitseigenschaften von Consumern in Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF)-Klassen auskennen und dass Sie das Thema Übersicht über Abhängigkeitseigenschaften gelesen haben.This topic assumes that you understand dependency properties from the perspective of a consumer of existing dependency properties on Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) classes, and have read the Dependency Properties Overview topic. Um den Beispielen in diesem Thema folgen zu können, sollten Sie Extensible Application Markup Language (XAML)Extensible Application Markup Language (XAML) verstehen (siehe Übersicht über XAML (WPF)) und mit dem Schreiben von WPFWPF-Anwendungen vertraut sein.In order to follow the examples in this topic, you should also understand Extensible Application Markup Language (XAML)Extensible Application Markup Language (XAML) (see XAML Overview (WPF)) and know how to write WPFWPF applications.

Objektlebensdauer-EreignisseObject Lifetime Events

Alle Objekte im verwalteten Microsoft .NET Framework-Code wechseln Sie über eine ähnliche Reihe von Phasen des Lebenszyklus, Erstellung, Verwendung und Zerstörung.All objects in Microsoft .NET Framework managed code go through a similar set of stages of life, creation, use, and destruction. Viele Objekte weisen außerdem eine Abschlussphase auf, die Teil der Zerstörungsphase ist.Many objects also have a finalization stage of life that occurs as part of the destruction phase. WPFWPF-Objekte, oder genauer gesagt: die visuellen Objekte, die WPFWPF als Elemente identifiziert, weisen zudem eine Reihe von allgemeinen Objektlebensphasen auf.objects, more specifically the visual objects that WPFWPF identifies as elements, also have a set of common stages of object life. Die WPFWPF-Programmierungs- und -Anwendungsmodelle stellen diese Phasen als eine Abfolge von Ereignissen dar.The WPFWPF programming and application models expose these stages as a series of events. In WPFWPF gibt es vier Objekttypen in Bezug auf Lebensdauerereignisse: allgemeine Elemente, Fensterelemente, Navigationshosts und Anwendungsobjekte.There are four main types of objects in WPFWPF with respect to lifetime events; elements in general, window elements, navigation hosts, and application objects. Fenster und Navigationshosts befinden sich auch innerhalb der größeren Gruppierung visueller Objekte (Elemente).Windows and navigation hosts are also within the larger grouping of visual objects (elements). In diesem Thema werden zunächst die Lebensdauerereignisse beschrieben, die allen Elementen gemeinsam sind. Anschließend wird eine Einführung in spezifischere Elemente gegeben, die sich auf Anwendungsdefinitionen, Fenster oder Navigationshosts beziehen.This topic describes the lifetime events that are common to all elements and then introduces the more specific ones that apply to application definitions, windows or navigation hosts.

Allgemeine Lebensdauerereignisse für ElementeCommon Lifetime Events for Elements

Alle WPF-Frameworkebene-Element (diese Objekte Ableiten von entweder FrameworkElement oder FrameworkContentElement) verfügt über drei allgemeine Lebensdauerereignisse: Initialized, Loaded, und Unloaded.Any WPF framework-level element (those objects deriving from either FrameworkElement or FrameworkContentElement) has three common lifetime events: Initialized, Loaded, and Unloaded.

InitialisiertInitialized

Initialized wird zuerst ausgelöst, und dies durch den Aufruf an den Konstruktor für die Initialisierung des Objekts entspricht.Initialized is raised first, and roughly corresponds to the initialization of the object by the call to its constructor. Da das Ereignis in Reaktion auf die Initialisierung eintritt, ist sichergestellt, dass alle Eigenschaften des Objekts festgelegt werden.Because the event happens in response to initialization, you are guaranteed that all properties of the object are set. (Eine Ausnahme sind Ausdrucksverwendungen wie z.B. dynamische Ressourcen oder Bindungen; dies sind nicht ausgewertete Ausdrücke.) Als Folge der Anforderung, die alle Eigenschaften festgelegt werden, die Reihenfolge der Initialized von geschachtelten Elementen, die im Markup definierte ausgelöst werden zunächst in der untersten Elemente in der Elementstruktur auftreten wird dann an die übergeordnete Elemente in Richtung Stammelement.(An exception is expression usages such as dynamic resources or binding; these will be unevaluated expressions.) As a consequence of the requirement that all properties are set, the sequence of Initialized being raised by nested elements that are defined in markup appears to occur in order of deepest elements in the element tree first, then parent elements toward the root. Diese Reihenfolge wird eingehalten, da die Beziehungen zwischen übergeordneten und untergeordneten Elementen und die Kapselung Eigenschaften sind und daher das übergeordnete Element erst die Initialisierung berichten kann, wenn die untergeordneten Elemente, die die Eigenschaft ausfüllen, auch vollständig initialisiert werden.This order is because the parent-child relationships and containment are properties, and therefore the parent cannot report initialization until the child elements that fill the property are also completely initialized.

Wenn Sie Handler als Reaktion auf schreiben die Initialized Ereignis müssen Sie berücksichtigen, dass es keine Garantie gibt, dass alle anderen Elemente in der Elementstruktur auf, in dem der Handler angefügt ist (entweder logische Struktur oder visuelle Struktur), vor allem erstellt wurden übergeordnete Elemente.When you are writing handlers in response to the Initialized event, you must consider that there is no guarantee that all other elements in the element tree (either logical tree or visual tree) around where the handler is attached have been created, particularly parent elements. Membervariablen sind möglicherweise NULL, oder Datenquellen sind unter Umständen noch nicht durch die zugrunde liegende Bindung gefüllt (auch nicht auf Ausdrucksebene).Member variables may be null, or data sources might not yet be populated by the underlying binding (even at the expression level).

GeladenLoaded

Loaded als Nächstes ausgeführt wird.Loaded is raised next. Die Loaded Ereignis wird vor dem endgültigen Rendern, aber nach der Berechnung der nötigen Werte für das Rendering durch das Layoutsystem ausgelöst.The Loaded event is raised before the final rendering, but after the layout system has calculated all necessary values for rendering. Loaded zur Folge, dass die logische Struktur, der in ein Element enthalten ist abgeschlossen ist, und eine Verbindung mit einer Präsentationsquelle, die das HWND und die Renderingoberfläche bereitstellt.Loaded entails that the logical tree that an element is contained within is complete, and connects to a presentation source that provides the HWND and the rendering surface. Standard-Datenbindung (Bindungen zu lokalen Quellen, wie andere Eigenschaften oder direkt definierte Datenquellen) werden aufgetreten vor Loaded.Standard data binding (binding to local sources, such as other properties or directly defined data sources) will have occurred prior to Loaded. Asynchrone Datenbindungen (externe oder dynamische Quellen) sind möglicherweise aufgetreten; dies kann jedoch aufgrund ihrer asynchronen Natur nicht garantiert werden.Asynchronous data binding (external or dynamic sources) might have occurred, but by definition of its asynchronous nature cannot be guaranteed to have occurred.

Der Mechanismus, mit dem die Loaded Ereignis wird ausgelöst, unterscheidet sich von Initialized.The mechanism by which the Loaded event is raised is different than Initialized. Die Initialized -Ereignis wird elementweise ausgelöst, ohne eine direkte Koordination durch eine vollständige Elementstruktur.The Initialized event is raised element by element, without a direct coordination by a completed element tree. Im Gegensatz dazu die Loaded Ereignis wird ausgelöst, während die gesamte Elementstruktur (insbesondere der logischen Struktur) koordiniert.By contrast, the Loaded event is raised as a coordinated effort throughout the entire element tree (specifically, the logical tree). Wenn alle Elemente in der Struktur in einem Zustand, in denen sie berücksichtigt werden, geladen, die Loaded -Ereignis zunächst für das Stammelement ausgelöst wird.When all elements in the tree are in a state where they are considered loaded, the Loaded event is first raised on the root element. Die Loaded -Ereignis wird dann nacheinander für jedes untergeordnete Element ausgelöst.The Loaded event is then raised successively on each child element.

Hinweis

Dieses Verhalten ähnelt oberflächlich betrachtet dem Tunneln für ein Routingereignis.This behavior might superficially resemble tunneling for a routed event. Allerdings werden hier keine Informationen von Ereignis zu Ereignis transportiert.However, no information is carried from event to event. Jedes Element hat immer die Möglichkeit, verarbeiten die Loaded -Ereignis, und markieren die Ereignisdaten als behandelt wirkt sich nicht nur auf dieses Element.Each element always has the opportunity to handle its Loaded event, and marking the event data as handled has no effect beyond that element.

Nicht GeladenUnloaded

Unloaded wird als Letztes ausgelöst und wird durch die Präsentationsquelle oder das übergeordnete visuelle Element entfernt wird.Unloaded is raised last and is initiated by either the presentation source or the visual parent being removed. Wenn Unloaded ausgelöst und behandelt, das Element, das das übergeordnete Element Event-Quelle ist (gemäß Parent Eigenschaft) oder ein bestimmtes Element oben in der logischen oder visuellen Strukturen wurde möglicherweise bereits Plattformmetadaten aufgehoben wird, was bedeutet, dass die Datenbindung, Ressourcenverweise , und Stile können nicht auf ihre normalen oder zuletzt bekannten Laufzeitwerte festgelegt werden.When Unloaded is raised and handled, the element that is the event source parent (as determined by Parent property) or any given element upwards in the logical or visual trees may have already been unset, meaning that data binding, resource references, and styles may not be set to their normal or last known run-time value.

Anwendungsmodellelemente für LebensdauerereignisseLifetime Events Application Model Elements

Aufbauend auf den allgemeinen Lebensdauerereignissen sind folgende Anwendungsmodellelemente: Application, Window, Page, NavigationWindow, und Frame.Building on the common lifetime events for elements are the following application model elements: Application, Window, Page, NavigationWindow, and Frame. Mit ihnen können die allgemeinen Lebensdauerereignisse, um zusätzliche Ereignisse erweitert werden, die relevant für ihren speziellen Zweck sind.These extend the common lifetime events with additional events that are relevant to their specific purpose. Sie werden im Detail in folgenden Themen erläutert:These are discussed in detail in the following locations:

Siehe auchSee also