FrameworkElement.AddLogicalChild(Object) Méthode

Définition

Ajoute l'objet fourni à l'arborescence logique de cet élément.

protected public:
 void AddLogicalChild(System::Object ^ child);
protected internal void AddLogicalChild (object child);
member this.AddLogicalChild : obj -> unit
Protected Friend Sub AddLogicalChild (child As Object)

Paramètres

child
Object

Élément enfant à ajouter.

Exemples

L’exemple suivant implémente une Child propriété sur une application personnalisée FrameworkElement qui effectue son propre implémentation de couche visuelle. L’ensemble de propriétés est conçu afin que si la valeur change, l’ancienne valeur est supprimée de l’arborescence logique, ainsi qu’une collection visuelle spécifique à la classe. La valeur de la propriété est mise en cache, puis la nouvelle valeur est ajoutée à l’arborescence logique et à la collection visuelle personnalisée.

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();
        }
    }
}
<System.ComponentModel.DefaultValue(GetType(Object), Nothing)>
Public Overridable Property Child() As UIElement
    Get
        Return _child
    End Get
    Set(ByVal value As UIElement)
        If _child IsNot value Then
            'need to remove old element from logical tree
            If _child IsNot Nothing Then
                OnDetachChild(_child)
                RemoveLogicalChild(_child)
            End If

            _vc.Clear()

            If value IsNot Nothing Then
                'add to visual
                _vc.Add(value)
                'add to logical
                AddLogicalChild(value)
            End If

            'always add the overlay child back into the visual tree if its set
            If _overlayVisual IsNot Nothing Then
                _vc.Add(_overlayVisual)
            End If

            'cache the new child
            _child = value

            'notify derived types of the new child
            If value IsNot Nothing Then
                OnAttachChild(_child)
            End If

            InvalidateMeasure()
        End If
    End Set
End Property

Remarques

Utilisez cette méthode pour l’implémentation de collections sur des objets qui représentent des éléments enfants logiques d’un élément. La maintenance des collections d’éléments enfants peut être effectuée dans les getters de propriétés ou les setters, la gestion des classes des événements modifiés, des constructeurs ou dans les types de collection eux-mêmes.

Pour les auteurs de contrôles, la manipulation de l’arborescence logique à ce niveau n’est pas la pratique recommandée, sauf si aucun des modèles de contenu pour les classes de contrôle de base disponibles est approprié pour votre scénario de contrôle. Envisagez la sous-classe au niveau de ContentControl, ItemsControlet HeaderedItemsControl. Ces classes fournissent un modèle de contenu avec une application particulière des éléments enfants d’arborescence logique via des API dédiées, ainsi que la prise en charge d’autres fonctionnalités généralement souhaitables dans un contrôle WPF, comme le style par le biais de modèles. Pour plus d’informations sur l’utilisation et AddLogicalChildl’utilisation LogicalChildren des arborescences dans WPF.

AddLogicalChild peut lever une exception si elle est appelée à la fois lorsque l’arborescence logique est itérée par un autre processus.

S’applique à

Voir aussi