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