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 。 另一個案例是標記中明顯根項目的專案,但會在編譯的邏輯樹狀結構中自動產生更大的基礎結構 (,例如 Page) 。 WindowPage 實作會刻意密封 方法。

適用於

另請參閱