Lire en anglais

Partager via


FrameworkElement.AddLogicalChild(Object) Méthode

Définition

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

C#
protected internal void AddLogicalChild (object child);

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.

C#
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();
        }
    }
}

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 à

Produit Versions
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
Windows Desktop 3.0, 3.1, 5, 6, 7

Voir aussi