2010-03-27 14 views
7

मुझे अपने बच्चे के चारों ओर सीमा खींचने के लिए नियंत्रण बनाने की आवश्यकता है। तो, मैं वर्ग बनाया है और डेकोरेटर से व्युत्पन्न है:क्या WPF सजावट वर्ग उपयोगी है?

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

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

यह ठीक काम करता है, लेकिन मैं डेकोरेटर पूर्वज के रूप में उपयोग करने के बारे में कुछ संदेह हो। मैंने एमएसडीएन में पाया है कि इसमें कोई विशेष विधि या गुण नहीं हैं, केवल अपने पूर्वजों (UIElement या FrameworkElement) से लिया गया है। ArrangeOverride और OnRender भी व्युत्पन्न हैं।

तो, सजावटी वर्ग के लिए क्या डिजाइन किया गया था और क्या इसका उपयोग करने के लिए यह समझ में आता है? या मैं फ्रेमवर्क एलिमेंट से प्राप्त कर सकता हूं?

उत्तर

10

यह क्या FrameworkElement से विरासत इसके अलावा, Decorator वर्ग (प्रकार UIElement की) एक Child संपत्ति है, साथ ही IAddChild इंटरफेस को लागू लागू करता है। इस प्रकार Decorator सबसे आदिम तत्व है जिसमें एक और तत्व हो सकता है।

क्या कोई कारण है कि आप बच्चे तत्व के चारों ओर सीमा बनाने के लिए Border तत्व (जो Decorator से प्राप्त होता है) का उपयोग करने में सक्षम नहीं थे?

+0

आपके उत्तर के लिए धन्यवाद। मुझे कुछ विशेष सीमा की जरूरत है, इसलिए मैंने अपना खुद का सजावट लागू करने का फैसला किया। – darja

+0

@ दार्जा यदि यह सीमा है तो मैं कम से कम अर्थपूर्ण पसंद को स्पष्ट करने के लिए 'सीमा' से प्राप्त करूंगा। मुझे नहीं पता कि आप क्या हासिल करने की कोशिश कर रहे हैं, लेकिन 'RoundedBoxDecorator'' Border.CornerRadius' के लिए एक वर्कअराउंड की तरह थोड़ा सा लगता है। – grek40

संबंधित मुद्दे