AdornerLayer: 表示一个或多个装饰元素的装饰器的呈现层。
AdornerDecorator: 使装饰器层与元素集合相关联。
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
Adorner介绍:
1. Adorner 是一种特殊类型的 FrameworkElement,用于向用户提供可视化提示。
2. Adorner 在 AdornerLayer 中呈现,这是一个始终位于装饰元素或装饰元素集合上方的呈现图面。
3. Adorner 通常使用位于它装饰元素左上部的标准 2-D 坐标原点,相对于其绑定到的元素进行定位。
4. 装饰器的常见应用包括:
4.1 向 UIElement 添加功能控点,使用这些控点,用户可以通过某种方式(调整大小、旋转、重新定位等等)操作元素。
4.2 提供可视反馈以指示各种状态,或响应各种事件。
4.3 在 UIElement 上叠加视觉效果。
4.4 从视觉上遮盖或重写 UIElement 的一部分或全部。
5. Adorner 不包括任何继承呈现行为,确保装饰器呈现是装饰器实施者的责任。 实现呈现行为的常见方式是重写 OnRenderSizeChanged 方法,并使用一个或多个 DrawingContext 对象来按需呈现装饰器的视觉效果。
6. 放置在 AdornerLayer 中的所有内容均呈现在您已设置的任何其余样式的顶部。也就是说, 装饰器始终以可见的方式位于顶部,无法使用 z 顺序重写。
7. Adorner 就像任何其他 FrameworkElement 一样接收输入事件。
因为装饰器的 z 顺序总是高于它所装饰的元素,所以该装饰器接收可能适用于基础装饰元素的输入事件(例如 Drop 或 MouseMove)。 装饰器可以侦听某些输入事件,并通过重新引发这些事件将其传递给基础装饰元素。
若要对装饰器下的元素启用传递命中测试,请在装饰器上将命中测试 IsHitTestVisible 的属性设置为 false。
More info, please refer to MSDN.
装饰器概述