2011-12-15 17 views
7

में कुंजी वैल्यू जोयर कम्बोबॉक्स पर विचार करें कि मेरे पास मुख्य मूल्य जोड़े संग्रह (पूर्व कुंजी = एमएसएफटी वैल्यू = एमएसएफटी माइक्रोसॉफ्ट) है जो मैं कॉम्बोबॉक्स से जुड़ता हूं। DisplayMemeberPath = मान। बाद जरूरतोंडब्ल्यूपीएफ

  • एक मद केवल कुंजी की जरूरत कॉम्बो में प्रदर्शित करने के लिए का चयन पर,

  • उपयोगकर्ता भी कॉम्बो में एक नया मान टाइप कर सकता है पूरा करना होगा।

मैं इन दोनों सुविधाओं का समर्थन करने वाले समाधान के साथ नहीं आ सकता। हल करना एक दूसरे को तोड़ता है।

<ComboBox IsTextSearchEnabled="True" Name="cmbBrokers" IsEditable="True" 
ItemsSource="{Binding BrokerCodes}" SelectedValuePath="Key" 
DisplayMemberPath="Value" Text="{Binding SelectedBroker, Mode=TwoWay}"> 
+0

आप एक अलग टेक्स्टबॉक्स का प्रयास कर सकते हैं जो चयनित आइटम की कुंजी प्रदर्शित करता है। Combobox नाम दें और इसे बाध्यकारी तत्व स्रोत के रूप में उपयोग करें और पथ चयनित है। मुझे लगता है कि आप कुंजी पर जाने के लिए selectitem.key का उपयोग करते हैं लेकिन मुझे यकीन नहीं है। – Paparazzi

+0

यदि आप उपयोगकर्ता द्वारा दर्ज किया गया नया इनपुट देखना चाहते हैं, तो आपको नए आइटम के साथ अपने आइटमसोर्स (ब्रोकरकोड) को अपडेट करना होगा – blindmeis

उत्तर

27

मुझे लगता है कि आप जो खोज रहे हैं वह निम्नानुसार है।

public class ComboBoxPairs 
{ 
    public string _Key { get; set; } 
    public string _Value { get; set; } 

    public ComboBoxPairs(string _key,string _value) 
    { 
     _Key = _key ; 
     _Value = _value ; 
    } 
} 

तो फिर तुम पर जाने के लिए और इस

List<ComboBoxPairs> cbp = new List<ComboBoxPairs>(); 

cbp.Add(new ComboBoxPairs("Microsoft", "MSFT")); 
cbp.Add(new ComboBoxPairs("Apple", "AAPL")); 

की तरह इस वर्ग का उपयोग और बता गया करने के लिए यह बाँध आप

cmbBrokers.DisplayMemberPath = "_Key"; 
cmbBrokers.SelectedValuePath = "_Value"; 

cmbBrokers.ItemsSource = cbp; 

है और जब आप का उपयोग करने की जरूरत है कि यह सिर्फ इस

करना
ComboBoxPairs cbp = (ComboBoxPairs)cmbBrokers.SelectedItem; 

string _key = cbp._Key; 
string _value = cbp._Value; 

यह सब यो है आपको करने की ज़रूरत है

-3

मुझे नहीं लगता कि इस स्थिति में उपयोग करने के लिए बॉक्स कंबोबॉक्स का सीधे यूआई तत्व सही यूआई तत्व है। यहां मुद्दा यह है कि combobox कुंजी/मान जोड़े का समर्थन करने के लिए डिज़ाइन नहीं किया गया है, खासकर यदि आप चाहते हैं कि उपयोगकर्ता कुंजी पर बाध्यकारी होने पर शब्दकोश में मूल्य जोड़ने में सक्षम हो। उदाहरण के लिए, यदि आप उन्हें एक मूल्य जोड़ने की अनुमति देते हैं, तो वे कुंजी कैसे जोड़ते हैं या अपडेट करने के लिए कुंजी का चयन करते हैं?

मुझे लगता है कि समाधान दो नियंत्रण होना है: कुंजी चयन के लिए एक combobox और मूल्य इनपुट के लिए एक टेक्स्टबॉक्स। जब तक कोई उपयोगकर्ता कोई कुंजी नहीं चुनता तब तक मान टेक्स्टबॉक्स छुपाया जाता है। एक बार कुंजी का चयन करने के बाद, उन्हें टेक्स्टबॉक्स में अपना मूल्य इनपुट दर्ज करें और एंटर या बटन दबाएं, फिर मान को चयनित कुंजी पर सेट करें।

3

एडम्स उदाहरण पर एक और अधिक सामान्य समाधान के साथ विस्तार।

xaml.cs में एक अवलोकन संग्रह संपत्ति बनाएं और इसे संग्रह दें।

ObservableCollection < KeyValuePair < string , string > > MyCollection { get; set; } 

MyCollection = new ObservableCollection < KeyValuePair < string , string > > () 

{ 
    new KeyValuePair < string , string > ("key1" ,"value1"), 
    new KeyValuePair < string , string > ("key2" ,"value2") 
}; 

xaml फ़ाइल में आपके द्वारा देखे गए प्रॉपर्टी में आपके अवलोकन संग्रह को डेटाबेस में पीछे रखें।

<ComboBox Grid.Row="3" 
      Grid.Column="1" 
      ItemsSource="{Binding MyCollection}" 
      DisplayMemberPath="Key" /> 

यदि आप के बजाय मूल्य प्रदर्शित करना चाहते हैं DisplayMemberPath="Value" को DisplayMemberPath="Key" बदल सकते हैं।