2010-03-27 6 views
7

자식 주위에 테두리를 그릴 컨트롤을 만들어야합니다. 그래서, 클래스를 생성하고 실내 장식에서 유래 한 : 그것은 잘 작동하지만WPF Decorator 클래스가 유용합니까?

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에서 파생 될 수 있습니까? 이 FrameworkElement에서 상속하는 게다가

답변

10

Decorator 클래스는 Child (유형 UIElement의) 특성뿐만 아니라 IAddChild 인터페이스를 구현을 구현합니다. 따라서 Decorator은 다른 요소를 포함 할 수있는 가장 원시적 인 요소입니다.

Border 요소 (상속되는 Decorator)를 사용하여 하위 요소 주위에 테두리를 만들 수없는 이유가 있습니까?

+0

답장을 보내 주셔서 감사합니다. 특별한 테두리가 필요해서 내 Decorator를 구현하기로 결정했습니다. – darja

+0

@darja 테두리 인 경우 적어도 의미 선택을 명확하게하기 위해 '테두리'에서 파생됩니다. 나는 당신이 달성하고자하는 것을 모르지만,'RoundedBoxDecorator'는'Border.CornerRadius'에 대한 회피책처럼 들립니다. – grek40

관련 문제