का उपयोग कर सेट पर कम्बोबॉक्स चयनित आइटम रीसेट करें मैं अपने डब्ल्यूपीएफ एप्लिकेशन में कॉम्बोबॉक्स का उपयोग कर रहा हूं और एमवीवीएम का पालन कर रहा हूं। स्ट्रिंग्स की एक सूची है जिसे मैं अपने कॉम्बोबॉक्स में दिखाना चाहता हूं।एमवीवीएम
XAML:
<ComboBox ItemsSource="{Binding ItemsCollection}" SelectedItem="{Binding SelectedItem}" />
देखें मॉडल:
public Collection<string> ItemsCollection; // Suppose this has 10 values.
private string _selectedItem;
public string SelectedItem
{
get { return _selectedItem; }
set
{
_selectedItem = value;
Trigger Notify of property changed.
}
}
अब इस कोड बिल्कुल ठीक काम कर रहा है। मैं दृश्य से चयन करने में सक्षम हूं और मैं ViewModel में परिवर्तन प्राप्त कर सकता हूं और यदि मैं अपने व्यूमोडेल से चयनित इटैम बदलता हूं तो मैं इसे अपने दृश्य में देख सकता हूं।
अब मैं यह हासिल करने की कोशिश कर रहा हूं। जब मैं अपने दृश्य से चयनित आइटम बदलता हूं तो मुझे एक चेक डालने की आवश्यकता होती है कि मूल्य अच्छा/खराब (या कुछ भी) चयनित आइटम सेट करें, अन्यथा इसे सेट न करें। तो मेरा विचार मॉडल इस तरह बदलता है।
public string SelectedItem
{
get { return _selectedItem; }
set
{
if (SomeCondition(value))
_selectedItem = value; // Update selected item.
else
_selectedItem = _selectedItem; // Do not update selected item.
Trigger Notify of property changed.
}
}
अब जब मैं निष्पादित इस कोड और SomeCondition (मान) झूठी देता है, SelectedItem रिटर्न वर्ष स्ट्रिंग मान, लेकिन ComboBox में मेरे विचार चयनित आइटम में मूल्य जो मैं चयन किया है। तो मान लीजिए कि मेरे कॉम्बोबॉक्स में दिखाए गए 10 तारों का संग्रह है। सभी मूल्य दूसरे और चौथे तत्व को छोड़कर अच्छे हैं (कुछ शर्त दूसरे और चौथे मान के लिए झूठी रिटर्न)। मैं क्या चाहता हूं कि अगर मैं चयनित 2 या 4 वें तत्व का चयन करता हूं तो यह नहीं बदलता है। लेकिन मेरा कोड यह ठीक से नहीं कर रहा है। यदि मैं दूसरा तत्व चुनता हूं तो फिर भी चयनित के रूप में दूसरा तत्व प्रदर्शित करता है। मुझे पता है कि मेरे कोड में कुछ गड़बड़ है। लेकिन यह क्या हैं?
यह एक बहुत उपयोगकर्ता के अनुकूल डिजाइन नहीं है। अगर मैं एक combobox में कुछ चुनता हूं, तो मैं उम्मीद करता हूं कि यह मेरा चयनित आइटम हो। आपको इसके बजाय combobox से अमान्य विकल्प हटा देना चाहिए। यदि कोई चयन वैधता किसी अन्य UI तत्व के चयनित मान पर आधारित होती है, तो उस चयन को बदलने से combobox के ItemSource को पुनर्निर्माण करना चाहिए। –
सभी वस्तुओं को दिखाने की आवश्यकता है, इसे बदल नहीं सकते हैं। –
मैं सहमत नहीं हूं कि अमान्य विकल्प न दिखाएं, या उन्हें ग्रे आउट करें और उनमें से चयन अक्षम करें, यही यूआई है। –