FrameworkElement.OnVisualParentChanged(DependencyObject) メソッド


ビジュアル ツリー内のこの要素の親が変更されたときに呼び出されます。Invoked when the parent of this element in the visual tree is changed. OnVisualParentChanged(DependencyObject) をオーバーライドします。Overrides 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)



前の親要素。The old parent element. null は要素に前のビジュアル親が存在しないことを示します。May be null to indicate that the element did not have a visual parent previously.


ビジュアルツリーは、コレクションなどの視覚的に表示されない要素を省略し、テーマやスタイルの合成に基づいて一部の要素を展開するため、論理ツリーとは異なる可能性があります。The visual tree is potentially different from the logical tree because it omits elements that do not render visually, such as collections, and expands some elements on the basis of their theme and style compositing. 詳細については、「WPF のツリー」を参照してください。For more information, see Trees in WPF.

注意 (継承者)

新しい親に対するこの仮想メソッドクエリの既定の実装では、さまざまな初期化イベントが発生し、必要に応じて FrameworkElement の初期化状態に関する内部フラグが設定されます。The default implementation of this virtual method queries for the new parent, raises various initialization events, and sets internal flags about initialization state of the FrameworkElement as appropriate. 最後に、UIElementによって宣言された一連の基本実装を呼び出し、Visualでそのベースを呼び出します。Finally, it calls the successive base implementations as declared by UIElement, which in turn calls its base in Visual. 常に基本実装を呼び出してこの動作を保持します。それ以外の場合は、別の要素の子として宣言されている場合、この要素の要素ツリーの動作が想定どおりでない可能性があります。Always call the base implementation to preserve this behavior, otherwise the element tree behavior for this element when declared as a child of another element may not be as expected.

いくつかの既存の Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) クラスは、このメソッドをオーバーライドします。たとえば、OnVisualParentChanged(DependencyObject)OnVisualParentChanged(DependencyObject)です。A few existing Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) classes override this method, for example: OnVisualParentChanged(DependencyObject), OnVisualParentChanged(DependencyObject). 最も一般的なシナリオは、新しい親が特定の型であることを強制することです。The most common scenario is to enforce that the new parent must be a particular type. これには、新しい親が型テストの何らかの方法で失敗した場合に、例外をスローすることが含まれることがあります。This might involve throwing an exception if the new parent failed some manner of type test. このシナリオの特化されたバージョンは、リスト項目およびメニュー項目の実装に存在します。これは、に格納する適切なコレクションを所有する親ビジュアルの外部では意味がありません。A specialized version of this scenario exists in implementations for list items and menu items, which do not make any sense outside a parent visual that owns an appropriate collection to store them in. これらのケースでは必ずしも例外が発生するとは限りません。これは、"regular" 親が一時的でない親要素に依存するデザイナーシナリオがある可能性があるためです。Note that these cases do not necessarily raise exceptions, because there might be designer scenarios that rely on reparenting elements that are momentarily without their "regular" parents.

このメソッドは、通常はルート要素である特定の要素 (Windowなど) でもオーバーライドされます。This method is also overridden in certain elements that are typically the root element, such as Window. もう1つのケースは、マークアップの明らかなルート要素であり、コンパイルされた論理ツリー (Pageなど) でより多くのインフラストラクチャを自動生成する要素です。Another case is elements that are the apparent root element in markup but which autogenerate a greater infrastructure in a compiled logical tree (such as Page). WindowPage の実装は、メソッドを意図的に封印します。The Window and Page implementations deliberately seal the method.