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)中自动生成更大的基础结构的元素。 和WindowPage实现故意密封该方法。