Проблема с потомком пользовательского класса Decorator в WPF - PullRequest
0 голосов
/ 30 мая 2010

Мне нужна пользовательская граница, которая немного отличается от обычной границы. Я создал класс, унаследованный от 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 Ответ

1 голос
/ 31 мая 2010

Легко исправляется, если вы вызываете базовую реализацию ArrangeOverride

protected override Size ArrangeOverride(Size arrangeSize)
{
    base.ArrangeOverride(arrangeSize);
    return arrangeSize;
}
...