FrameworkElement.OnVisualParentChanged(DependencyObject) 메서드

정의

시각적 트리에서 이 요소의 부모가 변경될 때 호출됩니다. OnVisualParentChanged(DependencyObject)를 재정의합니다.

protected public:
 override void OnVisualParentChanged(System::Windows::DependencyObject ^ oldParent);
protected internal override void OnVisualParentChanged(System.Windows.DependencyObject oldParent);
override this.OnVisualParentChanged : System.Windows.DependencyObject -> unit
Protected Friend Overrides Sub OnVisualParentChanged (oldParent As DependencyObject)

매개 변수

oldParent
DependencyObject

이전 부모 요소입니다. null 요소에 이전에 시각적 부모가 없음을 나타낼 수 있습니다.

설명

시각적 트리는 컬렉션과 같이 시각적으로 렌더링되지 않는 요소를 생략하고 테마 및 스타일 구성을 기반으로 일부 요소를 확장하기 때문에 논리 트리와 잠재적으로 다릅니다. 자세한 내용은 WPF의 트리를 참조하세요.

상속자 참고

이 가상 메서드의 기본 구현은 새 부모에 대해 쿼리하고, 다양한 초기화 이벤트를 발생시키고, 적절한 초기화 상태에 대한 내부 플래그를 FrameworkElement 설정합니다. 마지막으로, 다음에 의해 선언된 UIElement대로 연속적인 기본 구현을 호출하며, 이 구현은 해당 기본을 호출합니다 Visual. 이 동작을 유지하려면 항상 기본 구현을 호출합니다. 그렇지 않으면 다른 요소의 자식으로 선언된 경우 이 요소의 요소 트리 동작이 예상대로 되지 않을 수 있습니다.

몇 가지 기존 Windows Presentation Foundation(WPF) 클래스는 이 메서드를 재정의합니다(예: OnVisualParentChanged(DependencyObject), OnVisualParentChanged(DependencyObject)). 가장 일반적인 시나리오는 새 부모가 특정 형식이어야 한다는 것을 적용하는 것입니다. 새 부모가 형식 테스트에 실패한 경우 예외를 throw하는 작업이 포함될 수 있습니다. 이 시나리오의 특수 버전은 목록 항목 및 메뉴 항목에 대한 구현에 존재합니다. 이 구현은 해당 컬렉션을 저장할 적절한 컬렉션을 소유하는 부모 시각적 개체 외부에서는 의미가 없습니다. 이러한 경우 반드시 예외가 발생하는 것은 아닙니다. "일반" 부모가 없는 순간적으로 재부원 요소에 의존하는 디자이너 시나리오가 있을 수 있기 때문입니다.

이 메서드는 일반적으로 루트 요소인 특정 요소(예: Window.)에서도 재정의됩니다. 또 다른 사례는 태그의 명백한 루트 요소이지만 컴파일된 논리 트리(예: Page)에서 더 큰 인프라를 자동으로 생성하는 요소입니다. 및 Window 구현은 Page 의도적으로 메서드를 봉인합니다.

적용 대상

추가 정보