Разница между методами AdornerLayer.Update - PullRequest
0 голосов
/ 30 апреля 2020

Каковы различия между AdornerLayer.Update () и AdornerLayer.Update (UIElement) ?

Насколько я понимаю, точно один рекламный слой на элемент пользовательского интерфейса, который можно получить с помощью AdornerLayer.GetAdornerLayer (Visual) . Единственное отличие, которое я вижу, в том, что для каждого элемента пользовательского интерфейса нет слоя с надписью. Так, например, если у меня есть следующее визуальное дерево:

UIElement1  
-> UIElement2  
-> UIElement3

Тогда как-то UIElement2 и 3 не имеют своего собственного слоя надстройки, но используют слой надстройки UIElement1. И тогда Update() обновит все украшения для UIElement1, 2 и 3 и Update(UIElement) обновит только украшения для соответствующего элемента пользовательского интерфейса.

Так каковы условия, когда Элемент пользовательского интерфейса имеет свой собственный слой надстройки, и когда он использует слой надстройки над элементом пользовательского интерфейса выше в визуальном дереве?

1 Ответ

1 голос
/ 30 апреля 2020

Каждый UIElement не автоматически имеет свой уникальный AdornerLayer. Взгляните на эту документацию:

Обзор Adorners - Украшение одного UIElement

GetAdornerLayer просматривает визуальное дерево, начиная с указанного UIElement, и возвращает первый рекламный слой, который он находит. (Если слои указателя не найдены, метод возвращает null.)

AdornerDecorator

AdornerDecorator указывает положение AdornerLayer в визуальное дерево. Обычно он используется в ControlTemplate для элемента управления, который может содержать объекты Adorner. Например, ControlTemplate окна содержит AdornerDecorator, так что дочерние элементы окна могут быть украшены. Метод GetAdornerLayer возвращает null, если вы передаете элемент, который не имеет AdornerDecorator в качестве предка в своем визуальном дереве.

Итак, если вы используете Window в качестве root элемент, в визуальном дереве гарантированно будет хотя бы один Adorner, может быть больше в зависимости от того, какие другие элементы вы используете.

...