Eventi di durata degli oggettiObject Lifetime Events

In questo argomento vengono descritti gli eventi WPFWPF specifici che denotano le fasi della durata di un oggetto in termini di creazione, uso e distruzione.This topic describes the specific WPFWPF events that signify stages in an object lifetime of creation, use, and destruction.

PrerequisitesPrerequisites

In questo argomento si presuppongono la conoscenza delle proprietà di dipendenza dal punto di vista di un consumer di proprietà di dipendenza esistenti nelle classi Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF), nonché la lettura dell'argomento Panoramica sulle proprietà di dipendenza.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. Per seguire gli esempi illustrati in questo argomento, è anche necessario conoscere Extensible Application Markup Language (XAML)Extensible Application Markup Language (XAML) (vedere Cenni preliminari su XAML (WPF)) e saper scrivere applicazioni WPFWPF.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.

Eventi di durata degli oggettiObject Lifetime Events

Tutti gli oggetti nel codice gestito di Microsoft .NET Framework passano attraverso un insieme simile di fasi di vita, creazione, utilizzo e distruzione.All objects in Microsoft .NET Framework managed code go through a similar set of stages of life, creation, use, and destruction. Per molti oggetti la fase di finalizzazione della vita si verifica nell'ambito della fase di distruzione.Many objects also have a finalization stage of life that occurs as part of the destruction phase. Gli oggetti WPFWPF più specificamente gli oggetti visivi che WPFWPF identifica come elementi, hanno una serie comune di fasi di vita dell'oggetto.WPFWPF objects, more specifically the visual objects that WPFWPF identifies as elements, also have a set of common stages of object life. I modelli di programmazione e applicazione WPFWPF espongono queste fasi come una serie di eventi.The WPFWPF programming and application models expose these stages as a series of events. Esistono quattro tipi principali di oggetti in WPFWPF in relazione agli eventi di durata: gli elementi in generale, gli elementi finestra, gli host di navigazione e gli oggetti applicazione.There are four main types of objects in WPFWPF with respect to lifetime events; elements in general, window elements, navigation hosts, and application objects. Le finestre e gli host di navigazione fanno parte anche del più ampio raggruppamento di oggetti visivi (elementi).Windows and navigation hosts are also within the larger grouping of visual objects (elements). In questo argomento vengono descritti gli eventi di durata che sono comuni a tutti gli elementi; vengono quindi introdotti quelli più specifici che si applicano alle definizioni dell'applicazione, alle finestre o agli host di navigazione.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.

Eventi di durata comuni degli elementiCommon Lifetime Events for Elements

Qualsiasi elemento a livello di Framework WPF, ovvero gli oggetti che derivano da FrameworkElement o FrameworkContentElement, presenta tre eventi di durata comuni: Initialized, Loadede Unloaded.Any WPF framework-level element (those objects deriving from either FrameworkElement or FrameworkContentElement) has three common lifetime events: Initialized, Loaded, and Unloaded.

InizializzatoInitialized

Initialized viene generato per primo e approssimativamente corrisponde all'inizializzazione dell'oggetto da parte della chiamata al relativo costruttore.Initialized is raised first, and roughly corresponds to the initialization of the object by the call to its constructor. Poiché l'evento si verifica in seguito all'inizializzazione, tutte le proprietà dell'oggetto sono sicuramente impostate.Because the event happens in response to initialization, you are guaranteed that all properties of the object are set. Un'eccezione è costituita da utilizzi di espressioni come le risorse dinamiche o l'associazione. si tratta di espressioni non valutate. Come conseguenza del requisito per il quale vengono impostate tutte le proprietà, la sequenza di Initialized generati da elementi annidati definiti nel markup sembra essere eseguita prima dell'ordine degli elementi più profondi nell'albero degli elementi, quindi gli elementi padre verso la radice.(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. Questo ordine è determinato dal fatto che le relazioni padre-figlio e il contenimento sono proprietà e pertanto l'elemento padre non può segnalare l'inizializzazione finché tutti gli elementi figlio che riempiono la proprietà non sono stati completamente inizializzati.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.

Quando si scrivono i gestori in risposta all'evento Initialized, è necessario tenere presente che non vi è alcuna garanzia che tutti gli altri elementi nella struttura ad albero dell'elemento (albero logico o albero visuale) in cui è collegato il gestore siano stati creati, in particolare l'elemento padre elementi.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. Le variabili membro potrebbero essere Null oppure le origini dati potrebbero non essere ancora popolate dall'associazione sottostante (anche a livello di espressione).Member variables may be null, or data sources might not yet be populated by the underlying binding (even at the expression level).

CaricatoLoaded

il Loaded viene generato successivamente.Loaded is raised next. L'evento Loaded viene generato prima del rendering finale, ma dopo che il sistema di layout ha calcolato tutti i valori necessari per il rendering.The Loaded event is raised before the final rendering, but after the layout system has calculated all necessary values for rendering. Loaded comporta che l'albero logico in cui è contenuto un elemento sia completato e si connette a un'origine della presentazione che fornisce l'HWND e la superficie di rendering.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. Le data binding standard (associazione a origini locali, ad esempio altre proprietà o origini dati definite direttamente), si sono verificate prima di Loaded.Standard data binding (binding to local sources, such as other properties or directly defined data sources) will have occurred prior to Loaded. È possibile che il data binding asincrono (a origini esterne o dinamiche) si sia verificato, ma a causa della sua natura asincrona non è possibile averne la certezza.Asynchronous data binding (external or dynamic sources) might have occurred, but by definition of its asynchronous nature cannot be guaranteed to have occurred.

Il meccanismo in base al quale viene generato l'evento Loaded è diverso rispetto a Initialized.The mechanism by which the Loaded event is raised is different than Initialized. L'evento Initialized viene generato elemento per elemento, senza un coordinamento diretto da parte di un albero degli elementi completato.The Initialized event is raised element by element, without a direct coordination by a completed element tree. Al contrario, l'evento Loaded viene generato come sforzo coordinato nell'intero albero degli elementi (in particolare, l'albero logico).By contrast, the Loaded event is raised as a coordinated effort throughout the entire element tree (specifically, the logical tree). Quando tutti gli elementi dell'albero sono in uno stato in cui sono considerati caricati, l'evento Loaded viene innanzitutto generato sull'elemento radice.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. L'evento Loaded viene quindi generato successivamente in ogni elemento figlio.The Loaded event is then raised successively on each child element.

Nota

Questo comportamento potrebbe sembrare a prima vista analogo al tunneling per un evento indirizzato.This behavior might superficially resemble tunneling for a routed event. Tuttavia, le informazioni non vengono passate da evento a evento.However, no information is carried from event to event. Ogni elemento ha sempre la possibilità di gestire l'evento Loaded e contrassegnare i dati dell'evento come gestiti non ha alcun effetto oltre tale elemento.Each element always has the opportunity to handle its Loaded event, and marking the event data as handled has no effect beyond that element.

ScaricatoUnloaded

Unloaded viene generato per ultimo e viene avviato dall'origine della presentazione o dalla rimozione del padre visivo.Unloaded is raised last and is initiated by either the presentation source or the visual parent being removed. Quando Unloaded viene generato e gestito, l'elemento che rappresenta l'origine dell'evento padre (come determinato dalla proprietà Parent) o qualsiasi elemento specificato verso l'alto negli alberi logici o visivi potrebbe essere già stato annullato, vale a dire che data binding, riferimenti alle risorse e stili non può essere impostato sul valore di runtime normale o finale noto.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.

Elementi del modello di applicazione di eventi di durataLifetime Events Application Model Elements

La compilazione sugli eventi di durata comuni per gli elementi sono gli elementi del modello di applicazione seguenti: Application, Window, Page, NavigationWindowe Frame.Building on the common lifetime events for elements are the following application model elements: Application, Window, Page, NavigationWindow, and Frame. Questi estendono gli eventi di durata comuni con eventi aggiuntivi, pertinenti al relativo scopo specificoThese extend the common lifetime events with additional events that are relevant to their specific purpose. e vengono descritti in dettaglio nelle sezioni seguenti:These are discussed in detail in the following locations:

Vedere ancheSee also