Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

FrameworkElement.AddLogicalChild méthode (Object)

 

Date de publication : novembre 2016

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

Espace de noms:   System.Windows
Assembly:  PresentationFramework (dans PresentationFramework.dll)

protected internal void AddLogicalChild(
	object child
)

Paramètres

child
Type: System.Object

Élément enfant à ajouter.

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

Pour les auteurs de contrôle, la manipulation de l’arborescence logique à ce niveau n’est pas recommandé, sauf si aucun des modèles de contenu pour les classes de contrôle de base disponibles sont adaptées à votre scénario de contrôle. Considérez le sous-classement au niveau de ContentControl, ItemsControl, et HeaderedItemsControl. Ces classes fournissent un modèle de contenu d’application d’éléments enfants d’arborescence logique via dédié API, ainsi que la prise en charge d’autres fonctionnalités généralement voulues dans un WPF contrôle telles que le style via des modèles. Pour plus d’informations sur l’utilisation de LogicalChildren et AddLogicalChild, consultez arborescences dans WPF.

AddLogicalChild peut de lever une exception si appelée au moment où l’arborescence logique est itérée par un autre processus.

L’exemple suivant implémente un Child propriété personnalisé FrameworkElement qui effectue sa propre implémentation de couche visuelle. L’accesseur Set de propriété est conçue afin que si la valeur change, l’ancienne valeur est supprimée de l’arborescence logique mais aussi d’une collection visuelle spécifique à la classe. La valeur de propriété est mis en cache, et ensuite 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();
        }
    }
}

.NET Framework
Disponible depuis 3.0
Retour au début
Afficher: