用途:该技能讲解 WPF 中 Adorner 装饰层的实现模式,用于在 UIElement 之上叠加装饰性视觉元素,如拖拽手柄、校验错误提示、水印、选中高亮、徽标与拖放预览。
主要能力:Adorner 位于独立渲染层 AdornerLayer,始终渲染在被装饰元素之上,不影响目标元素布局,并可接收鼠标与键盘事件。资料给出基础 Adorner 实现(继承 Adorner、重写 OnRender 绘制边框)、添加与移除 Adorner 的代码,以及 AdornerDecorator 的默认位置与显式用法(如 Popup 中需显式添加)。还提供水印 Adorner 示例及其附加属性封装,可在 XAML 中以 local:Watermark.Text="Enter email address" 使用。
使用方式:通过 AdornerLayer.GetAdornerLayer(targetElement) 获取层,再调用 Add/Remove;移除时可用 GetAdorners 遍历。自定义 Adorner 需正确实现 VisualChildrenCount 与 GetVisualChild,并用 MeasureOverride、ArrangeOverride 布局子元素。
适用场景:输入框错误显示、元素移动与缩放手柄、空 TextBox 提示文字、选中高亮、元素附加信息、拖拽预览等。
限制与注意:添加前需确认 AdornerLayer 存在;仅作装饰时应设 IsHitTestVisible = false;应及时移除不再需要的 Adorner 以防内存泄漏;Popup 等特殊容器需显式加入 AdornerDecorator。高级模式(缩放手柄、校验错误、拖拽预览、生命周期管理服务)见 references/advanced-adorners.md。