Para ver el artículo en inglés, active la casilla Inglés. También puede ver el texto en inglés en una ventana emergente si pasa el puntero del mouse por el texto.
Traducción
Inglés
Esta documentación está archivada y no tiene mantenimiento.

FrameworkElement.AddLogicalChild (Método)

Agrega el objeto proporcionado al árbol lógico de este elemento.

Espacio de nombres:  System.Windows
Ensamblado:  PresentationFramework (en PresentationFramework.dll)

protected internal void AddLogicalChild(
	Object child
)

Parámetros

child
Tipo: System.Object
Elemento secundario que se va a agregar.

Use este método para la implementación de colecciones en los objetos que representan elementos secundarios lógicos de un elemento. El mantenimiento de las colecciones de elementos secundarios se podría realizar en captadores o establecedores de propiedad, control de clases de los eventos Changed, constructores o dentro de los propios tipos de colecciones.

Para los autores de controles, no se recomienda manipular el árbol lógico en este nivel, a menos que ninguno de los modelos de contenido para las clases de control base disponibles sea adecuado para su escenario de control. Considere la creación de subclases en el nivel de ContentControl, ItemsControl y HeaderedItemsControl. Estas clases proporcionan un modelo de contenido con una exigencia concreta de elementos secundarios del árbol lógico a través de las APIs dedicadas, además de admitir otras características típicamente deseables en un control WPF, como crear estilos a través de plantillas. Para obtener más información acerca de cómo usar LogicalChildren y AddLogicalChild, vea Árboles en WPF.

AddLogicalChild puede producir una excepción si se le llama en el momento en que otro proceso está iterando el árbol lógico.

En el ejemplo siguiente se implementa una propiedad Child en un objeto FrameworkElement personalizado que hace su propia implementación visual. El establecedor de la propiedad se diseñó de modo que si el valor cambia, el valor anterior se quita del árbol lógico, así como una colección visual específica de la clase. El valor de la propiedad se almacena en memoria caché y, a continuación, el nuevo valor se agrega al árbol lógico y la colección visual personalizada.


public virtual UIElement Child
{
    get
    {
        return _child;
    }
    set
    {
        if (_child != value)
        {
            //need to remove old element from logical tree
            if (_child != null)
            {
                OnDetachChild(_child);
                RemoveLogicalChild(_child);
            }

            _vc.Clear();

            if (value != null)
            {
                //add to visual
                _vc.Add(value);
                //add to logical
                AddLogicalChild(value);
            }

            //always add the overlay child back into the visual tree if its set
            if (_overlayVisual != null)
                _vc.Add(_overlayVisual);

            //cache the new child
            _child = value;

            //notify derived types of the new child
            if (value != null)
                OnAttachChild(_child);

            InvalidateMeasure();
        }
    }
}


.NET Framework

Compatible con: 4, 3.5, 3.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows 7, Windows Vista SP1 o posterior, Windows XP SP3, Windows Server 2008 (no se admite Server Core), Windows Server 2008 R2 (se admite Server Core con SP1 o posterior), Windows Server 2003 SP2

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.
Mostrar: