FrameworkElement.AddLogicalChild(Object) Method


이 요소의 논리적 트리에서에 제공된 된 개체를 추가합니다.Adds the provided object to the logical tree of this element.

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)



추가할 자식 요소입니다.Child element to be added.


다음 예제에서는 고유한 시각적 계층 구현을 수행 하는 사용자 지정 FrameworkElement에 대 한 Child 속성을 구현 합니다.The following example implements a Child property on a custom FrameworkElement that does its own visual layer implementation. 속성 setter는 이전 값을 논리적 트리를 뿐만 아니라 클래스 관련 시각적 컬렉션에서 제거 값이 변경 되도록 설계 되었습니다.The property setter is designed so that if the value changes, the old value is removed from the logical tree, as well as a class-specific visual collection. 속성 값을 캐시 하 고, 논리적 트리와 시각적 사용자 지정 컬렉션에 새 값을 추가한.The property value is cached, and then the new value is added to both the logical tree and the custom visual collection.

public virtual UIElement Child
        return _child;
        if (_child != value)
            //need to remove old element from logical tree
            if (_child != null)


            if (value != null)
                //add to visual
                //add to logical

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

            //cache the new child
            _child = value;

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

<System.ComponentModel.DefaultValue(GetType(Object), Nothing)>
Public Overridable Property Child() As UIElement
        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
            End If


            If value IsNot Nothing Then
                'add to visual
                'add to logical
            End If

            'always add the overlay child back into the visual tree if its set
            If _overlayVisual IsNot Nothing Then
            End If

            'cache the new child
            _child = value

            'notify derived types of the new child
            If value IsNot Nothing Then
            End If

        End If
    End Set
End Property


요소의 논리적 자식 요소를 나타내는 개체에는 컬렉션의 구현에이 메서드를 사용 합니다.Use this method for the implementation of collections on objects that represent logical child elements of an element. Changed 이벤트, 생성자 또는 컬렉션 형식 자체 내에서 처리 하는 클래스 또는 속성 getter 및 setter에서 자식 요소 컬렉션에 대 한 컬렉션 유지 관리를 수행할 수 있습니다.Collection maintenance for child element collections might be done in property getters or setters, class handling of Changed events, constructors, or within the collection types themselves.

컨트롤 작성자에 대 한이 수준에서 논리 트리를 조작 하지 않는 좋습니다를 사용할 수 있는 기본 컨트롤 클래스에 대 한 콘텐츠 모델의 제어 시나리오에 적합 합니다.For control authors, manipulating the logical tree at this level is not the recommended practice, unless none of the content models for available base control classes are appropriate for your control scenario. ContentControl, ItemsControlHeaderedItemsControl수준에서 서브클래싱을 고려 합니다.Consider subclassing at the level of ContentControl, ItemsControl, and HeaderedItemsControl. 이러한 클래스는 전용 Api를 통해 논리 트리 자식 요소를 특정 적용 하는 내용 모델 뿐만 아니라 템플릿을 통한 스타일 지정과 같은 WPFWPF 컨트롤에서 일반적으로 사용 하는 기타 기능에 대 한 지원을 제공 합니다.These classes provide a content model with particular enforcement of logical tree child elements through dedicated APIs, as well as support for other features typically desirable in a WPFWPF control such as styling through templates. LogicalChildrenAddLogicalChild를 사용 하는 방법에 대 한 자세한 내용은 WPF의 트리를 참조 하세요.For more information on how to use LogicalChildren and AddLogicalChild, see Trees in WPF.

다른 프로세스에서 논리 트리를 반복 하는 경우에 호출 되는 경우 AddLogicalChild 예외를 throw 할 수 있습니다.AddLogicalChild may throw an exception if called at a time when the logical tree is being iterated by another process.

Applies to

See also