मैं WPF के साथ MVVM पद्धति का उपयोग कर रहा हूँ और एक समस्या है, जो मैं निम्नलिखित करने के लिए सरल बना सकते हैं में चलाने की है:आप कॉम्बोबॉक्स के चयनित इटैम को उस ऑब्जेक्ट से कैसे बांधते हैं जो आइटम्ससोर्स से किसी आइटम की एक प्रति है?
मैं एक CardType मॉडल है।
public class CardType
{
public int Id { get; set; }
public string Name { get; set; }
}
और मेरे पास एक व्यूमोडेल है जो कार्डटाइप का उपभोग करता है।
public class ViewModel : INotifyPropertyChanged
{
private CardType selectedCardType;
public CardType SelectedCardType
{
get { return selectedCardType; }
set
{
selectedCardType = value;
OnPropertyChanged(nameof(SelectedCardType));
}
}
public IEnumerable<CardType> CardTypes { get; set; }
// ... and so on ...
}
मेरे XAML कोई ComboBox कि CardTypes पर अपने आइटम को आधार बनाता और SelectedCardType के आधार पर एक आइटम पहिले से चयन करना चाहिए है।
<ComboBox ItemsSource="{Binding CardTypes}"
DisplayMemberPath="Name"
SelectedItem="{Binding SelectedCardType}"/>
मेरे नियंत्रण से बाहर कारणों के लिए, SelectedCardType वस्तु एक संदर्भ-असमान CardTypes में आइटम की प्रतिलिपि हो जाएगा। इसलिए WPF आइटम्ससोर्स में किसी आइटम को चयनित इटैम से मिलान करने में विफल रहता है, और जब मैं ऐप चलाता हूं, तो कॉम्बोबॉक्स प्रारंभ में कोई आइटम चयनित नहीं होता है।
मैंने कार्डटाइप पर समान() और GetHashCode() विधियों को ओवरराइड करने का प्रयास किया, लेकिन WPF अभी भी आइटम से मेल खाने में विफल रहता है।
मेरी अनोखी बाधाओं को देखते हुए, मैं सही आइटम का चयन करने के लिए कॉम्बोबॉक्स कैसे प्राप्त कर सकता हूं?
शीर्ष जवाब काम करता मतदान करते हैं, इस: https: // stackoverflow .com/a/24776204/1121033 एक ही प्रश्न के लिए एक और अधिक सुरुचिपूर्ण समाधान है। –