【问题标题】:Is WPF Decorator class useful?WPF 装饰器类有用吗?
【发布时间】:2010-03-27 14:57:21
【问题描述】:

我需要创建控件以在其子项周围绘制边框。所以,我创建了类并从装饰器派生它:

class RoundedBoxDecorator : Decorator
{
    protected override Size ArrangeOverride(Size arrangeSize)
    {
        //some source
    }

    protected override void OnRender(DrawingContext dc)
    {
        //some source
    }
}

它工作正常,但我对使用装饰器作为祖先有一些疑问。我在 MSDN 中发现其中没有特殊的方法或属性,仅源自其祖先(UIElement 或 FrameworkElement)。 ArrangeOverride 和 OnRender 也是派生的。

那么,Decorator 类的设计目的是什么?使用它是否有意义?或者我可以从 FrameworkElement 派生?

【问题讨论】:

    标签: .net wpf decorator


    【解决方案1】:

    除了继承自FrameworkElement 的内容之外,Decorator 类还实现了Child 属性(UIElement 类型),以及实现了IAddChild 接口。因此Decorator 是最原始的元素,可以包含另一个元素。

    是否有您无法使用Border 元素(继承自Decorator)来围绕子元素创建边框的原因?

    【讨论】:

    • 感谢您的回答。我需要一些特殊的边框,所以我决定实现自己的装饰器。
    • @darja 如果它是一个边框,我会从Border 派生,至少要明确语义选择。我不知道你想要达到什么目的,但RoundedBoxDecorator 听起来有点像Border.CornerRadius 的解决方法。
    猜你喜欢
    • 2013-02-06
    • 2016-11-24
    • 2014-01-14
    • 2020-01-11
    • 2019-02-23
    • 2011-09-14
    • 2010-11-25
    • 2010-11-24
    • 2015-03-04
    相关资源
    最近更新 更多