与WPF中的自定义Decorator类的子问题

时间:2010-05-30 18:48:43

标签: c# .net wpf decorator

我需要一个自定义边框,其渲染方式与普通边框略有不同。我创建了一个继承自Decorator的类,如下所示

class BetterBorder : Decorator
{
    protected override Size ArrangeOverride(Size arrangeSize)
    {
        return arrangeSize;
    }

    protected override void OnRender(DrawingContext dc)
    {
        //these values are calculated elsewhere
        dc.DrawGeometry(backgroundBrush, borderPen, pathGeometry);
    }
}
//Properties and helper methods below this

所有这一切都正常,直到我尝试将一个子项添加到控件,控件可以添加但不可见,似乎被移出BetterBorders可见客户区。如果我从Border继承一切正常,我错过了什么?

1 个答案:

答案 0 :(得分:1)

通过确保调用ArrangeOverride的基本实现

轻松修复
protected override Size ArrangeOverride(Size arrangeSize)
{
    base.ArrangeOverride(arrangeSize);
    return arrangeSize;
}