2009-12-08 14 views
6

आप सभी के लिए आराम से एक है ...सिल्वरलाइट - मैं कैसे

मैं Silverlight के लिए नया हूँ और DataTables और चीजों की तरह वास्तव में लापता सामान एक combobox में चयनित आइटम के पाठ मिलता है। वर्तमान में मैं जो भी संघर्ष कर रहा हूं वह है कि मेरे कम्बोबॉक्स के वर्तमान में चुने गए आइटम का टेक्स्ट कैसे प्राप्त करें। WinForms में मैं किया होता:

ComboBox myCombo = new ComboBox....... 
string selected = myCombo.Text; 

मैं कैसे इस जानकारी के बाहर निकलने के लिए संघर्ष कर रहा हूँ।

उत्तर

9

अपने कॉम्बो बॉक्स के चयनित आइटम जो कुछ आइटम के प्रकार वर्तमान में कर रहा है है। तो अगर आप तार का एक संग्रह के लिए बाध्य सेट करते हैं, तो चयनित आइटम एक स्ट्रिंग होगा:

string mySelectedValue = ((string)MyComboBox.SelectedItem); 

यदि यह एक अधिक जटिल वस्तु आप डाली और उम्मीद वस्तु का उपयोग करने की आवश्यकता होगी है। आप XAML सूची बॉक्स आइटम वर्ग का उपयोग कर, की तरह है: एक जटिल वस्तु के लिए उपयोग प्रतिबिंब DisplayMemberPath संपत्ति के साथ

string mySelectedValue = 
    ((TextBlock)((ComboBoxItem)MyComboBox.SelectedItem).Content).Text; 
+0

पर काम की पुष्टि करें मुझे लगता है कि कैलानस – Raghurocks

+0

पर सीधे उत्तर का जवाब है मेरा उत्तर 3 साल पुराना है। मैं थोड़ी देर के लिए सिल्वरलाइट में नहीं रहा हूं, इसलिए यह सराहनीय है कि कैलानस का जवाब सिल्वरलाइट के वर्तमान संस्करण में काम कर सकता है; मैं उस पर टिप्पणी नहीं कर सकता। मुझे नहीं लगता कि यह समृद्ध कॉम्बो बॉक्स आइटमों के लिए किया गया था जैसा कि मैंने जवाब दिया था। –

+0

नवीनतम चांदी की रोशनी पर काम नहीं करता है। 'System.String' टाइप करने के लिए "ऑब्जेक्ट का ऑब्जेक्ट डालने में असमर्थ" System.Windows.Controls.ComboBoxItem 'मिला। " –

-1
myCombo.SelectedItem.Content 

कॉम्बोबॉक्स इटैम की सामग्री वापस कर देगा। यह आपके पास क्या है, और आप किसी आइटम टेम्पलेट के लिए क्या उपयोग कर रहे हैं, इस पर निर्भर करते हुए टेक्स्टब्लॉक आदि हो सकता है।

+1

नहीं, यह काम नहीं करता है 1) क्योंकि चयनित इटैम एक स्ट्रिंग नहीं है और 2) भले ही आप करते हैं। इस पर टॉस्ट्रिंग() यह सिस्टम System.indows.Controls.ComboBoxItem देता है। मुझे पता है कि मैं शायद इसे पार्स कर सकता हूं और जानकारी प्राप्त कर सकता हूं लेकिन निश्चित रूप से एक आसान तरीका है? – Calanus

7

ठीक है, इस सवाल का जवाब myCombo.SelectionBoxItem.ToString उपयोग करने के लिए है()

+0

नवीनतम चांदी की रोशनी –

3

,:

<ComboBox x:Name="MyComboBox"> 
    <ComboBox.Items> 
     <ComboBoxItem> 
      <TextBlock Text="Hello World"/> 
     </ComboBoxItem> 
    </ComboBox.Items> 
</ComboBox> 

तो फिर तुम चयनित आइटम इस तरह का उपयोग होता

var itemType = cbx.SelectedItem.GetType(); 
var pi = itemType.GetProperty(cbx.DisplayMemberPath); 
var stringValue = pi.GetValue(cbx.SelectedItem, null).ToString(); 
+0

बहुत बहुत धन्यवाद, आपका समाधान वह है जो सभी परिस्थितियों में काम करता है – sepisoad

0

आप तार की एक सरणी के लिए एक सरल बता गया है, तो आप चयनित स्ट्रिंग का उपयोग प्राप्त कर सकते हैं

(string)e.AddedItems[0]; 

मान लीजिए कि मेरे पास एक उत्पाद सूची कॉम्बो है और मैं चयनित उत्पाद नाम जानना चाहता हूं।

private void productCombo_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e) 
     { 
      string product_type=(string)e.AddedItems[0]; 
     } 
1
string txt=(comboboxID.SelectedItem as BindingClass).Text.ToString(); 

string value=(comboboxID.SelectedItem as BindingClass).Value.ToString(); 


public class BindingClass 
{ 
    public string Text 
     { 
     set; 
      get; 
     } 

    public string Value 
     { 
     set; 
      get; 
     } 
} 
+1

निजी सेट; निजी क्षेत्र में संपत्ति क्षेत्र निर्धारित करेगा। – PhilipChrist

1
((ComboBoxItem)comboBox1.SelectedItem).Content.ToString() 

मुझे मिल गया यह इस बयान से काम किया: SelectionChanged घटना में तो मैं निम्नलिखित कोड लिखें।