AdornerLayer.Update方法之间的差异



AdornerLayer.Update((和AdornerLayer。Update(UIElement(之间到底有什么区别?

据我所知,每个ui元素只有一个装饰层,这可以通过AdornerLayer.GetAdornerLayer(Visual(获得。我能看到的唯一区别是,如果每个ui元素都没有装饰层。例如,如果我有以下视觉树:

UIElement1  
-> UIElement2  
-> UIElement3

那么UIElement23不具有自己的装饰层,而是使用UIElement1的装饰层。然后Update()将更新UIElement123的所有装饰器,而Update(UIElement)将仅更新相应ui元素的装饰器。

那么,当一个UI元素有自己的装饰器层时,以及当它使用视觉树中更高级别的UI元素的装饰器时,条件是什么呢?

每个UIElement都会自动拥有自己唯一的AdornerLayer。看看这个文档:

装饰概述-装饰单个UIElement

GetAdornerLayer从指定的UIElement开始向上遍历可视化树,并返回它找到的第一个装饰层。(如果没有找到装饰层,则该方法返回null。(

AdornerDecorator

AdornerDecorator指定AdornerLayer在视觉树。它通常用于控件的ControlTemplate可能承载Adorner对象。例如Window包含一个AdornerDecorator,以便窗户可以装饰一下。如果您传入一个没有AdornerDecorator作为其视觉树中的祖先。

因此,如果您使用Window作为根元素,则保证在视觉树中至少有一个Adorner,根据您使用的其他元素,可能会有更多CCD_14。

相关内容

  • 没有找到相关文章

最新更新