2010-03-27 19 views
7

Çocuğunun etrafında sınır çizmek için kontrol oluşturmam gerekiyor. Yani, sınıf oluşturmuş ve Dekoratör onu elde var: Düzgün çalışır, ancakWPF Decorator sınıfı kullanışlı mı?

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

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

Ben atası olarak Decorator kullanmayla ilgili bazı şüphelerim var. MSDN'de, yalnızca atalarından (UIElement veya FrameworkElement) türetilmiş özel bir yöntem veya özellik bulunmadığını öğrendim. ArrangeOverride ve OnRender da türetilmiştir.

Peki, ne Dekoratör sınıfı tasarlanmış ve bunu kullanmak için mantıklı mı? Ya da FrameworkElement'den türetebilirim? o FrameworkElement devralır neyi yanında

cevap

10

, Decorator sınıf bir Child (tip UIElement arasında) özelliğini, hem de IAddChild arabirimini uygulayan uygular. Böylece Decorator, başka bir öğe içerebilen en ilkel elementtir.

Alt öğe çevresinde kenarlık oluşturmak için Border öğesini (Decorator öğesinden miras alan) kullanamadığnızın bir nedeni var mı?

+0

Cevabınız için teşekkür ederiz. Bazı özel sınırlara ihtiyacım var, bu yüzden kendi Dekoratörümü uygulamaya karar verdim. – darja

+0

@darja Sınırsa, en azından anlamsal seçimi netleştirmek için 'Border' türetilmiş olurdum. Neyi başarmaya çalıştığınızı bilmiyorum, fakat 'RoundedBoxDecorator', 'Border.CornerRadius' için bir geçici çözüm gibi görünüyor. – grek40

İlgili konular