2010-01-28 13 views
16

में किसी संग्रह में बाध्य कॉम्बोबॉक्स में एक सामान्य आइटम कैसे जोड़ते हैं मेरे पास एक WPF एप्लिकेशन में कॉम्बोबॉक्स है जो सी # व्यूमोडेल क्लास में विभाग ऑब्जेक्ट्स के अवलोकन योग्य चयन के लिए बाध्य है। मैं विभाग द्वारा किसी अन्य संग्रह को फ़िल्टर करने के लिए कॉम्बो बॉक्स का उपयोग करना चाहता हूं (और वास्तव में यह अब इसके लिए काम करता है) समस्या यह है कि मैं सूची के शीर्ष पर एक अतिरिक्त विकल्प "सभी" जोड़ना चाहता हूं। ऐसा करने का कोई सही तरीका है। नकली विभाग बनाना कई तरीकों से गलत लगता है।आप डब्ल्यूपीएफ

ComboBox

<ComboBox ItemsSource="{Binding Path=Departments}" 
      SelectedValue="{Binding Path=DepartmentToShow , Mode=TwoWay}" /> 

उत्तर

22

आप ComboBox के लिए ItemsSource के रूप में एक CompositeCollection इस्तेमाल कर सकते हैं "सभी" विकल्प शामिल करने के लिए। आपको कलेक्शनकंटनर की संग्रह संपत्ति को "विभाग वस्तुओं के पर्यवेक्षण चयन" में सेट करने की आवश्यकता है।

<ComboBox > 
    <ComboBox.ItemsSource> 
     <CompositeCollection> 
      <ComboBoxItem>All</ComboBoxItem> 
      <CollectionContainer x:Name="departmentCollection"/> 
     </CompositeCollection> 
    </ComboBox.ItemsSource> 
</ComboBox> 

सुनिश्चित नहीं हैं कि अगर यह आपके छानने स्थिति तथापि के लिए उपयुक्त हो जाएगा ...

+1

+1 वाह एक अनुभवी WPF प्रोग्रामर के रूप में मुझे 'कंपोजिट कोलेक्शन' के बारे में भी पता नहीं था! इंटरनेट खोजते समय इसके लिए सभी तरह के कामकाज होते हैं, लेकिन इसका कोई उल्लेख नहीं है! अविश्वसनीय ... –

+0

हाँ जब मैंने इसे पढ़ा तो मैं आश्चर्यचकित हुआ। मैं आज सुबह कुछ देख रहा हूं और मुझे लगता है कि यह चाल करेगा। फिलहाल फ़िल्टरिंग क्वेरी के निर्माण में फ़िल्टरिंग किया जाता है, इसलिए मुझे लगता है कि मैं 'ऑल' के लिए परीक्षण कर सकता हूं और यदि इसका चयन नहीं किया जाता है तो लोगों को चयन करें। भविष्य में मैं बिना किसी आवश्यकता के दृश्य को फ़िल्टर करने के लिए एक संग्रह दृश्य संसाधन का पुन: उपयोग करने और उपयोग करने की योजना बना रहा था; मुझे यकीन नहीं है कि यह कैसे काम करेगा लेकिन इस प्रश्न के लिए मेरा जवाब है। धन्यवाद! –

+1

@Aviad हाँ यह एक अच्छा समाधान है, एक चीज जो थोड़ा सा चूसती है वह यह है कि आप डेटाकॉन्टेक्स्ट के माध्यम से संग्रह संपत्ति से जुड़ नहीं सकते क्योंकि कंपोजिट कोलेक्शन फ्रीजबल नहीं है। यह एक स्थिर संसाधन के लिए बाध्यकारी के आसपास काम किया जा सकता है ... –

0

मान लीजिए आप MyCombo नाम के एक ComboBox है, MyEntity नामित एक इकाई एक DomaineService के साथ जुड़े MyDomainService नाम दिया है।

मत भूलना

using System.ServiceModel.DomainServices.Client; 

और निश्चित रूप से अपने संस्था की अपनी वेब साइट और DomainService

साथ अच्छी तरह से काम कर रहा का उपयोग कर आप एक प्रोक नामित फोन: में फिर

void LoadEntities() 
{ 
    MyDomainService_Context = new MyDomainService(); 
    EntityQuery<MyEntity > mQuery = null; 

    mQuery = from q in _Context.GetMyDomainServiceQuery() 
      select q; 

    LoadOperation<MyEntity > loadOpLoadEntities = _Context.Load(mQuery, LoadOpLoadEntitiesCallBack, null); 
} 

CallBack फ़ंक्शन:

void LoadOpLoadEntitiesCallBack(LoadOperation<MyEntity> loadOperation) 
{ 
    if (loadOperation.Entities.Count() > 0) 
    { 
     List<MyEntity> mList = new List<MyEntity>(); 
     MyEntity mE = new MyEntity(); 
     mE.Column1 = -1; 
     mE.Column2 = "Default value"; 
     mList.Add(mE); 

     for (int i = 0; i < loadOperation.Entities.Count(); i++) 
     { 
      mList.Add(loadOperation.Entities.ToList()[i]); 
     } 

     this.MyCombo.ItemsSource = mList.ToList(); 
    } 
} 
+0

यह लिंक से एसक्यूएल का उपयोग कर एक एमवीवीएम डब्ल्यूपीएफ ऐप है। समग्र कॉलेक्शन समाधान कुछ वर्षों से काफी अच्छा काम कर रहा है लेकिन अतिरिक्त इनपुट के लिए धन्यवाद। –

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