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 намеренно запечатывают метод .
Продукт | Версии |
---|---|
.NET Framework | 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1 |
Windows Desktop | 3.0, 3.1, 5, 6, 7, 8, 9, 10 |
Отзыв о .NET
.NET — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв: