2011-03-07 19 views
5

मैं एक usercontrol जो निर्माण करने के लिए कोशिश कर रहा हूँ इस तरह XAML से तत्वों लेने में सक्षम है:WPF में UserControl की तरह ComboBox कैसे बनाएं

  <ComboBox > 
       <ComboBoxItem /> 
       <ComboBoxItem /> 
       <ComboBoxItem /> 
      </ComboBox> 

ComboBox में, आप बस आइटम ComboBox के बीच जोड़ सकते हैं टैग, और मैं इसे कॉपी करना चाहता हूं, लेकिन मुझे नहीं पता कि कहां से शुरू करना है।

तैयार यह इस तरह दिखना चाहिए:

<cis:ReportControl Grid.Row="3"> 
      <cis:ReportItem /> 
    </cis:ReportControl> 

cis:ReportControl में, कुछ Button और एक ComboBox कर रहे हैं, और मूल रूप से मैं केवल आइटम के साथ ComboBox को खिलाने के लिए चाहते हैं।

रिपोर्ट आइटम कुछ अतिरिक्त गुणों के साथ बस ComboBoxItem है।

संपादित करें:

मैं @Snowbears जवाब के अनुसार इसे लागू किया गया है, लेकिन समस्या अब नियंत्रण एक आइटम के रूप में की गई है। मुझे लगता है कि ऐसा इसलिए है क्योंकि मेरे पास कुछ सामग्री है, और ContentProperty को मेरे ComboBox पर परिभाषित करके, इसे बॉक्स में रीडायरेक्ट किया गया है। इससे बचने के लिए मैं क्या कर सकता हूं?

संपादित द्वितीय:

यह पूरी तरह से इस के साथ अब काम करता है:

private ItemCollection reportItems; 
    public ItemCollection ReportItems 
    { 
     get 
     { 
      if (reportItems == null) 
      { 
       reportItems = this.ComboBoxReports.Items; 
      } 
      return reportItems; 
     } 
    } 
[ContentProperty("ReportItems")] गुण के साथ

। कॉम्बोबॉक्स रिसॉर्ट्स नियंत्रण में कॉम्बोबॉक्स है, और इसे काम करने के लिए मुझे ItemsControl से उत्तराधिकारी होना था।

उत्तर

4
  1. आपको अपने उपयोगकर्ता नियंत्रण में संपत्ति बनाना चाहिए जो IList इंटरफ़ेस को कार्यान्वित करने वाले कुछ का खुलासा करेगा। मान लें कि इस संपत्ति का नाम ReportItems रखा जाएगा। इस संपत्ति में सेटर नहीं होना चाहिए और इसे बैकिंग फ़ील्ड पर फ़ील्ड प्रारंभिक रूप से उपयोगकर्ता नियंत्रक में या तो कन्स्ट्रक्टर में प्रारंभ किया जाना चाहिए।
  2. UserControl अपनी संपत्ति नाम के साथ ContentProperty विशेषता के साथ चिह्नित किया जाना चाहिए (ReportItems)
  3. आंतरिक बता गया यह ItemsSource UserControl के ReportItems संपत्ति के लिए बाध्य कर रहा है होना चाहिए
0

तुम देखो अगर How Create own Control को आप दो बातों के लिए ध्यान देना चाहिए के लिए:

1) Custom Control1 या User Control1 (यह आपके 0,123,438 पर निर्भर है)
2) Dependency Properties (उन्हें नियंत्रण में उपयोग)

मुझे लगता है कि आप कस्टम नियंत्रण का उपयोग करने के लिए और भी आप ComboBox या अन्य नियंत्रण से अपने कस्टम नियंत्रण के वारिस कर सकते हैं की जरूरत हो सकती है।

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