FrameworkElement.OnVisualParentChanged(DependencyObject) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
當該元素在視覺樹的父節點被更改時會被呼叫。 覆蓋 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)。 Window與Page實作刻意封閉了這個方法。