Eventos de duración de objetosObject Lifetime Events

En este tema se describen los eventos WPFWPF específicos que indican las fases de duración de la creación, el uso y la destrucción de objetos.This topic describes the specific WPFWPF events that signify stages in an object lifetime of creation, use, and destruction.

Requisitos previosPrerequisites

En este tema, se supone que entiende las propiedades de dependencia desde la perspectiva de un consumidor de propiedades de dependencia existentes en las clases Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) y que ha leído el tema Información general sobre las propiedades de dependencia.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. Para seguir los ejemplos de este tema, también debe comprender Lenguaje XAML (Extensible Application Markup Language)Extensible Application Markup Language (XAML) (consulte Información general sobre XAML (WPF)) y saber cómo escribir aplicaciones WPFWPF.In order to follow the examples in this topic, you should also understand Lenguaje XAML (Extensible Application Markup Language)Extensible Application Markup Language (XAML) (see XAML Overview (WPF)) and know how to write WPFWPF applications.

Eventos de duración de objetosObject Lifetime Events

Todos los objetos en el código administrado de Microsoft .NET Framework que se van a través de un conjunto similar de fases de la vida, la creación, uso y destrucción.All objects in Microsoft .NET Framework managed code go through a similar set of stages of life, creation, use, and destruction. Además, muchos objetos tienen una fase de finalización de duración que se produce como parte de la fase de destrucción.Many objects also have a finalization stage of life that occurs as part of the destruction phase. Los objetos WPFWPF, concretamente los objetos visuales que WPFWPF identifica como elementos, también tienen un conjunto de fases comunes de duración de objeto.WPFWPF objects, more specifically the visual objects that WPFWPF identifies as elements, also have a set of common stages of object life. Los modelos de programación y aplicación WPFWPF exponen estas fases como una serie de eventos.The WPFWPF programming and application models expose these stages as a series of events. Hay cuatro tipos principales de objetos de WPFWPF con respecto a los eventos de duración: elementos en general, elementos de ventana, hosts de navegación y objetos de aplicación.There are four main types of objects in WPFWPF with respect to lifetime events; elements in general, window elements, navigation hosts, and application objects. Las ventanas y los hosts de navegación también se encuentran dentro de un grupo más grande de objetos visuales (elementos).Windows and navigation hosts are also within the larger grouping of visual objects (elements). En este tema se describen los eventos de duración que son comunes para todos los elementos y se indican los más específicos que se aplican a las definiciones de aplicación, las ventanas o los hosts de navegación.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.

Eventos de duración comunes para elementosCommon Lifetime Events for Elements

Cualquier elemento de nivel de marco WPF (los objetos derivados de cualquiera FrameworkElement o FrameworkContentElement) tiene tres eventos de duración comunes: Initialized, Loaded, y Unloaded.Any WPF framework-level element (those objects deriving from either FrameworkElement or FrameworkContentElement) has three common lifetime events: Initialized, Loaded, and Unloaded.

InicializadoInitialized

Initialized se genera primero y corresponde aproximadamente a la inicialización del objeto mediante la llamada a su constructor.Initialized is raised first, and roughly corresponds to the initialization of the object by the call to its constructor. Dado que el evento se produce en respuesta a la inicialización, se garantiza que se establecen todas las propiedades del objeto.Because the event happens in response to initialization, you are guaranteed that all properties of the object are set. (Las excepciones son los usos de la expresión, como recursos dinámicos o enlaces, que son expresiones no evaluadas). Como consecuencia el requisito de que se establecen todas las propiedades, la secuencia de Initialized que se generan elementos anidados que se definen en la marcación parece que ocurre en orden de los elementos más profundo en el árbol de elementos en primer lugar, elementos primarios hasta la raíz.(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. Este orden se debe a que las relaciones entre elementos primarios y secundarios y las inclusiones son propiedades y, por tanto, el elemento primario no puede informar de la inicialización hasta que los elementos secundarios que rellenan la propiedad estén inicializados completamente.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.

Cuando se escribe controladores en respuesta a la Initialized eventos, debe tener en cuenta que no hay ninguna garantía de que todos los demás elementos del árbol de elementos (árbol visual o árbol lógico) en torno a la que está asociado el controlador se han creado, especialmente elementos primarios.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. Es posible que las variables de miembro sean nulas o que el enlace subyacente no haya rellenado todavía los orígenes de datos (incluso en el nivel de expresión).Member variables may be null, or data sources might not yet be populated by the underlying binding (even at the expression level).

CargadoLoaded

Loaded se genera a continuación.Loaded is raised next. El Loaded evento se genera antes de la representación final, pero después de que el sistema de diseño haya calculado todos los valores necesarios para la representación.The Loaded event is raised before the final rendering, but after the layout system has calculated all necessary values for rendering. Loaded implica que el árbol lógico que está dentro de un elemento está completado y se conecta a un origen de presentación que proporciona el HWND y la superficie de representación.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. Enlace de datos estándar (enlace a orígenes locales, como otras propiedades u orígenes de datos definidos directamente) se habrán producido antes Loaded.Standard data binding (binding to local sources, such as other properties or directly defined data sources) will have occurred prior to Loaded. Es posible que el enlace de datos asincrónico (orígenes externos o dinámicos) se haya producido, pero, por definición de su naturaleza asincrónica, no se puede garantizar que realmente se haya producido.Asynchronous data binding (external or dynamic sources) might have occurred, but by definition of its asynchronous nature cannot be guaranteed to have occurred.

Mecanismo por el cual el Loaded provoca el evento es diferente de Initialized.The mechanism by which the Loaded event is raised is different than Initialized. El Initialized evento es genera elemento por elemento, sin la coordinación directa de un árbol de elementos completado.The Initialized event is raised element by element, without a direct coordination by a completed element tree. Por el contrario, el Loaded se provoca el evento como un esfuerzo coordinado en todo el árbol de elementos completo (en concreto, el árbol lógico).By contrast, the Loaded event is raised as a coordinated effort throughout the entire element tree (specifically, the logical tree). Cuando todos los elementos del árbol están en un estado en que se consideran cargado, el Loaded en primer lugar se provoca el evento en el elemento raíz.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. El Loaded , a continuación, se genera correctamente el evento en cada elemento secundario.The Loaded event is then raised successively on each child element.

Nota

Este comportamiento puede parecerse a primera vista a una tunelización para un evento enrutado.This behavior might superficially resemble tunneling for a routed event. Sin embargo, no se desplaza información de un evento a otro.However, no information is carried from event to event. Cada elemento siempre tiene la oportunidad de controlar su Loaded eventos y marcar los datos de evento como controlados no tiene ningún efecto más allá de ese 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.

DescargadoUnloaded

Unloaded se genera en último lugar y se inicia cuando el origen de presentación o el elemento primario visual que se va a quitar.Unloaded is raised last and is initiated by either the presentation source or the visual parent being removed. Cuando Unloaded se genera y se controla, el elemento que es el elemento primario de origen de eventos (según lo determinado por Parent propiedad) o cualquier elemento hacia arriba en los árboles lógicos o visuales puede haber estado sin establecer, lo que significa que enlace de datos, las referencias de recursos , y no se pueden establecer los estilos a su valor de tiempo de ejecución normal o último conocido.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.

Elementos del modelo de aplicación de eventos de duraciónLifetime Events Application Model Elements

A partir de los eventos de duración comunes para los elementos son los siguientes elementos de modelo de aplicación: Application, Window, Page, NavigationWindow, y Frame.Building on the common lifetime events for elements are the following application model elements: Application, Window, Page, NavigationWindow, and Frame. Extienden los eventos de duración comunes con eventos adicionales que son pertinentes para su finalidad específica.These extend the common lifetime events with additional events that are relevant to their specific purpose. Esto se trata detalladamente en las siguientes ubicaciones:These are discussed in detail in the following locations:

Vea tambiénSee also