Полезен ли класс WPF Decorator? - PullRequest
7 голосов
/ 27 марта 2010

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

1 Ответ

10 голосов
/ 27 марта 2010

Помимо того, что он наследует от FrameworkElement, класс Decorator реализует свойство Child (типа UIElement), а также реализует интерфейс IAddChild.Таким образом, Decorator является наиболее примитивным элементом, который может содержать другой элемент.

Существует ли причина, по которой вы не смогли использовать элемент Border (который наследуется от Decorator) для создания границы вокругдочерний элемент?

...