Adorner: 抽象基類,所有具體裝飾器的實現都從該類繼承。
AdornerLayer: 表示一個或多個裝飾元素的裝飾器的呈現層。
AdornerDecorator: 使裝飾器層與元素集合相關聯。
public abstract class Adorner : FrameworkElement
{
}
public class AdornerLayer : FrameworkElement
{
}
public class AdornerDecorator : Decorator
{
}
public class Decorator : FrameworkElement, IAddChild
{
}
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.
裝飾器概述