次の方法で共有


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) 最も一般的なシナリオは、新しい親が特定の型である必要があることを強制することです。 これには、新しい親が何らかの型テストに失敗した場合に例外がスローされる可能性があります。 このシナリオの特殊なバージョンは、リスト項目とメニュー項目の実装に存在します。これは、格納する適切なコレクションを所有する親ビジュアルの外部では意味がありません。 これらのケースでは、必ずしも例外が発生するとは限らないことに注意してください。これは、"通常の" 親を持たない一時的な要素の親の再親に依存するデザイナー シナリオが存在する可能性があるためです。

このメソッドは、通常ルート要素である特定の Window要素でもオーバーライドされます。 もう 1 つのケースは、マークアップの見かけ上のルート要素ですが、コンパイルされた論理ツリー内のより大きなインフラストラクチャ (など Page) を自動生成する要素です。 そして Window 実装 Page は意図的にメソッドを封印します。

適用対象

こちらもご覧ください