2010-08-17 26 views
9

मेरे पास एक कॉम्बोबॉक्स है जिसमें इसके आइटमसोर्स विकल्पों के एक स्थिर List<CustomSettings> से बंधे हैं। कॉम्बोबॉक्स एक ऐसे फॉर्म का हिस्सा है जो कस्टम ऑब्जेक्ट क्लास से जुड़ा हुआ है, और उस वर्ग के गुणों में से एक कस्टमसेटिंग प्रॉपर्टी है।WPF - Combobox SelectedItem सेट नहीं हो रहा है?

मैं कस्टमऑब्जेक्ट में निर्दिष्ट संपत्ति पर कॉम्बोबॉक्स के चयनित इटैम को बांधना चाहता हूं, हालांकि SelectedItem="{Binding Path=CustomSettingProperty}" डिफ़ॉल्ट चयनित आइटम सेट नहीं कर रहा है। ब्रेकपॉइंट्स का उपयोग करके मैं देख सकता हूं कि यह get; विधि को कॉल कर रहा है, इसलिए मुझे लगता है कि समस्या यह हो सकती है कि कस्टमसेटिंगप्रॉपर्टी List<CustomObject> से अलग से बनाई गई है, इसलिए डब्ल्यूपीएफ को यह नहीं लगता कि यह वही आइटम है।

क्या ऐसा करने का कोई आसान तरीका है? या शायद एक विकल्प के बाद से कस्टम सेटिंग्स कक्षा में एक आईडी है?

+0

आप CustomSettingProperty के लिए कोड दे सकते हैं? और संभवतः एक उदाहरण है कि आप इसे कैसे सेट कर रहे हैं? – jsmith

उत्तर

20

यदि चयनित आइटम आइटम सूची में निहित एक ही उदाहरण नहीं है, तो आपको कस्टमऑब्जेक्ट में समान() को ओवरराइड करना होगा ताकि कॉम्बोबॉक्स को पता चले कि यह वही वस्तु है।

यदि यह एक ही उदाहरण है, हो सकता है यह इस तरह TwoWay को BindingMode स्थापित करने में बस एक आसान बात है:

SelectedItem="{Binding Path=CustomSettingProperty,Mode=TwoWay}" 
+1

धन्यवाद! मुझे विश्वास नहीं है कि मैंने बराबर ओवरराइड करने के बारे में नहीं सोचा था ... मैं फिर से यह गलती नहीं करूँगा (मुझे उम्मीद है) – Rachel

+0

मुझे एक ही समस्या है लेकिन मुझे ओवरराइड किया गया है 'बराबर()' मैं कैसे सेट कर सकता हूं BindingMode? नोट: मैं सी # और विनफॉर्म –

+0

मोड का उपयोग कर रहा हूं डिफ़ॉल्ट रूप से दोवे है? –

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