Поделиться через


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, ). Реализации Window и Page намеренно запечатывают метод .

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

См. также раздел