2010-03-27 13 views
7

Necesito crear control para dibujar el borde alrededor de su hijo. Por lo tanto, he creado clase y derivados desde decorador:¿Es útil la clase WPF Decorator?

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

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

Funciona bien, pero tengo algunas dudas acerca del uso de decorador como ancestro. Encontré en MSDN que no hay métodos o propiedades especiales en él, solo derivados de sus antecesores (UIElement o FrameworkElement). ArrangeOverride y OnRender también se derivan.

Entonces, ¿para qué se diseñó la clase Decorator y tiene sentido usarla? ¿O puedo derivar de FrameworkElement?

Respuesta

10

Además de lo que se hereda de FrameworkElement, la clase implementa un DecoratorChild propiedad (de tipo UIElement), así como la implementación de la interfaz IAddChild. Por lo tanto, Decorator es el elemento más primitivo que puede contener otro elemento.

¿Hay algún motivo por el que no haya podido utilizar un elemento Border (que hereda de Decorator) para crear el borde alrededor del elemento secundario?

+0

Gracias por su respuesta. Necesito un borde especial, así que decidí implementar mi propio Decorador. – darja

+0

@darja Si es un borde que derivaría de 'Border', al menos para aclarar la elección semántica. No sé lo que está intentando lograr, pero 'RoundedBoxDecorator' suena un poco como una solución para' Border.CornerRadius'. – grek40