我需要创建控件来围绕其子项绘制边框。所以,我创建了类并从Decorator中派生出来:
class RoundedBoxDecorator : Decorator
{
protected override Size ArrangeOverride(Size arrangeSize)
{
//some source
}
protected override void OnRender(DrawingContext dc)
{
//some source
}
}
它工作正常,但我对使用Decorator作为祖先有一些疑问。我在MSDN中发现其中没有特殊的方法或属性,只是从它的祖先(UIElement或FrameworkElement)派生而来。 ArrangeOverride和OnRender也是派生出来的。
那么,Decorator类的设计是什么,使用它有意义吗?或者我可以从FrameworkElement派生出来?
答案 0 :(得分:10)
除了它从FrameworkElement
继承的内容之外,Decorator
类实现了Child
属性(类型为UIElement
),并实现了IAddChild
接口。因此Decorator
是可以包含另一个元素的最原始的元素。
您是否有理由无法使用Border
元素(继承自Decorator
)来创建子元素周围的边框?