FrameworkElement.RemoveLogicalChild(Object) FrameworkElement.RemoveLogicalChild(Object) FrameworkElement.RemoveLogicalChild(Object) FrameworkElement.RemoveLogicalChild(Object) Method

정의

이 요소의 논리적 트리에서 제공된 개체를 제거합니다.Removes the provided object from this element's logical tree. 이 삭제 작업과 동기화된 상태를 유지하기 위해 FrameworkElement가 영향을 받는 논리적 트리 부모 포인터를 업데이트합니다.FrameworkElement updates the affected logical tree parent pointers to keep in sync with this deletion.

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

매개 변수

child
Object Object Object Object

제거할 요소입니다.The element to remove.

예제

다음 예제에서는 구현 하는 Child 사용자 지정 속성 FrameworkElement 수행 하는 자체 시각적 계층 구현 합니다.The following example implements a Child property on a custom FrameworkElement that does its own visual layer implementation. 속성의 setter는 이전 값을 논리적 트리를 뿐만 아니라 클래스 관련 시각적 컬렉션에서 제거 값이 변경 되도록 설계 되었습니다.The property's 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. 값은 캐시 및 한 새 값을 표준 WPF 프레임 워크 수준 논리적 트리 및 사용자 지정 시각적 컬렉션에 추가 됩니다.The values are cached, and then the new value is added to both the standard WPF framework level logical tree and the custom visual collection.

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

설명

요소의 논리적 자식을 나타내는 개체에는 컬렉션의 구현에이 메서드를 사용 합니다.Use this method for the implementation of collections on objects that represent logical children of an element. 속성 getter 또는 setter의 클래스 처리기에서이 작업을 수행할 수 있습니다 Changed 이벤트, 생성자 컬렉션 내에서 형식 자체 또는 합니다.This might be done in property getters or setters, class handlers 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 provided base control class' content models are appropriate. 하위 수준 클래스는 것이 좋습니다 ContentControl, ItemsControl, 및 HeaderedItemsControl합니다.Consider subclassing at the level of ContentControl, ItemsControl, and HeaderedItemsControl. 이러한 클래스는 전용 통해 논리적 자식의 특정 적용을 사용 하 여 콘텐츠 모델을 제공 APIAPIs에서 일반적으로 사용 가능한 다른 기능에 대 한 지원 뿐만 아니라는 WPFWPF 템플릿 통한 스타일 지정과 같은 컨트롤입니다.These classes provide a content model with particular enforcement of logical children through dedicated APIAPIs, as well as support for other features typically desirable in a WPFWPF control such as styling through templates.

적용 대상

추가 정보