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实现故意密封该方法。

适用于

另请参阅