FrameworkElement.OnVisualParentChanged(DependencyObject) FrameworkElement.OnVisualParentChanged(DependencyObject) FrameworkElement.OnVisualParentChanged(DependencyObject) FrameworkElement.OnVisualParentChanged(DependencyObject) Method

Определение

Вызывается при изменении родителя данного элемента в визуальном дереве.Invoked when the parent of this element in the visual tree is changed. Переопределяет OnVisualParentChanged(DependencyObject).Overrides 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 DependencyObject DependencyObject DependencyObject

Прежний родительский элемент.The old parent element. Может иметь значение null, чтобы показать, что ранее у элемента не было родительского элемента.May be null to indicate that the element did not have a visual parent previously.

Комментарии

Визуальное дерево может отличаться от логического дерева, так как оно опускает элементы, которые не отображаются визуально, например коллекции, и разворачивает некоторые элементы на основе их темы и композиции стилей.The visual tree is potentially different from the logical tree because it omits elements that do not render visually, such as collections, and expands some elements on the basis of their theme and style compositing. Дополнительные сведения см. в разделе Деревья в WPF.For more information, see Trees in WPF.

Примечания для тех, кто наследует этот метод

Реализация этого виртуального метода по умолчанию запрашивает новый родительский объект, создает различные события инициализации и устанавливает внутренние флаги для состояния FrameworkElement инициализации соответствующего объекта.The default implementation of this virtual method queries for the new parent, raises various initialization events, and sets internal flags about initialization state of the FrameworkElement as appropriate. Наконец, он вызывает последовательные базовые реализации UIElement, объявленные, что, в свою очередь, вызывает его основу в. VisualFinally, it calls the successive base implementations as declared by UIElement, which in turn calls its base in Visual. Всегда вызывайте базовую реализацию, чтобы сохранить это поведение, в противном случае поведение дерева элементов для этого элемента при объявлении в качестве дочернего для другого элемента может отличаться от ожидаемого.Always call the base implementation to preserve this behavior, otherwise the element tree behavior for this element when declared as a child of another element may not be as expected.

Несколько существующих Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) классов переопределяют этот метод, например: OnVisualParentChanged(DependencyObject), OnVisualParentChanged(DependencyObject).A few existing Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) classes override this method, for example: OnVisualParentChanged(DependencyObject), OnVisualParentChanged(DependencyObject). Наиболее распространенным сценарием является обеспечение того, что новый родительский элемент должен быть определенным типом.The most common scenario is to enforce that the new parent must be a particular type. Это может привести к созданию исключения, если новый родительский элемент не удалось выполнить какой-либо способ проверки типа.This might involve throwing an exception if the new parent failed some manner of type test. Специализированная версия этого сценария существует в реализациях элементов списка и пунктов меню, которые не имеют смысла за пределами родительского визуального элемента, которому принадлежит соответствующая коллекция для хранения.A specialized version of this scenario exists in implementations for list items and menu items, which do not make any sense outside a parent visual that owns an appropriate collection to store them in. Обратите внимание, что эти случаи не обязательно вызывают исключения, так как могут существовать сценарии конструктора, которые полагаются на элементы с переродителем, которые находятся в непостоянном виде, без "обычных" родителей.Note that these cases do not necessarily raise exceptions, because there might be designer scenarios that rely on reparenting elements that are momentarily without their "regular" parents.

Этот метод также переопределяется в некоторых элементах, которые обычно являются корневым элементом, Windowнапример.This method is also overridden in certain elements that are typically the root element, such as Window. Другой вариант — элементы, которые представляют собой видимый корневой элемент в разметке, но который автоматически создает большую инфраструктуру в скомпилированном Pageлогическом дереве (например,).Another case is elements that are the apparent root element in markup but which autogenerate a greater infrastructure in a compiled logical tree (such as Page). Реализации Window иPage намеренно запечатывать метод.The Window and Page implementations deliberately seal the method.

Применяется к

Дополнительно