2009-12-16 27 views
10

मेरे व्यूमोडेल पर मुझे int संपत्ति मिली है और मैं 16, 8, 4 और 2 जैसे विकल्पों के सीमित सेट के साथ कॉम्बोबॉक्स के साथ संपादन के लिए इसे बेनकाब करना चाहता हूं। क्या इसमें विकल्प निर्दिष्ट करने का कोई तरीका है एक्सएएमएल, जबकि अभी भी मूल्य को वापस देखने के लिए बाध्यकारी है? मैं जानता हूँ कि मैं रिग ऊपर कोड में एक List<int> और सेट कि ItemsSource के रूप में कर सकते थेडेटा बाध्य WPF कॉम्बोबॉक्स XAML में परिभाषित विकल्पों के साथ?

<ComboBox SelectedValue="{Binding MyIntProperty}"> 
    <ComboBoxItem>16</ComboBoxItem> 
    <ComboBoxItem>8</ComboBoxItem> 
    <ComboBoxItem>4</ComboBoxItem> 
    <ComboBoxItem>2</ComboBoxItem> 
</ComboBox> 

, लेकिन मैं आशा करती हूं कि इस कि शामिल नहीं करता है करने के लिए एक तरीका है: मैं इस तरह कुछ करना चाहता हूँ चाहते हैं व्यूमोडेल में एक अतिरिक्त संपत्ति जो कोड में बनाए गए संग्रह को उजागर करती है।

उत्तर

13

आप अपने विकल्पों में बिल्कुल वैसे ही निर्दिष्ट कर सकते हैं जैसे आप अपने उदाहरण में हैं। यह आपकी अनुपस्थिति की तरह दिखता है, इसे काम करने के लिए, चयनित ValuePath प्रॉपर्टी है। इसके बिना, चयनित वैल्यू चयनित इटिम के समान होगा। कॉम्बोबॉक्स में SelectedValuePath = "Content" को सेट करके आप निर्दिष्ट कर सकते हैं कि आपके चयनित वैल्यू बाइंडिंग इसके बजाय चयनित इटैम के केवल एक हिस्से के लिए बाध्यकारी है, इस मामले में प्रत्येक कॉम्बोबॉक्स Item में सामग्री के रूप में निर्दिष्ट सामग्री।

यहां इसके साथ एक छोटा सा डेमो है, और टेक्स्टबॉक्स पर मान भी बाध्यकारी है, जहां आप आइटम सेट कर सकते हैं और इसे चयनित वैल्यू बाइंडिंग (या इसके विपरीत) के माध्यम से कॉम्बोबॉक्स में दिखाई देता है।

<StackPanel> 
    <StackPanel Orientation="Horizontal"> 
     <TextBlock Text="Set Value:" /> 
     <TextBox Text="{Binding MyIntProperty, UpdateSourceTrigger=PropertyChanged}" /> 
    </StackPanel> 
    <StackPanel Orientation="Horizontal"> 
     <TextBlock Text="Select Value:" /> 
     <ComboBox SelectedValue="{Binding MyIntProperty}" SelectedValuePath="Content"> 
      <ComboBoxItem>2</ComboBoxItem> 
      <ComboBoxItem>4</ComboBoxItem> 
      <ComboBoxItem>6</ComboBoxItem> 
      <ComboBoxItem>8</ComboBoxItem> 
      <ComboBoxItem>16</ComboBoxItem> 
     </ComboBox> 
    </StackPanel> 
</StackPanel> 
+0

आह धन्यवाद। मैंने वास्तव में उस सटीक चीज की कोशिश की थी लेकिन सोचा था कि यह काम नहीं कर रहा था क्योंकि मेरी संपत्ति अभी तक सेट नहीं की गई थी। फिर भी, यह जवाब स्पष्ट रूप से वहां से अच्छा है क्योंकि खोज करते समय मुझे यह नहीं मिला। – RandomEngy

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