2010-07-18 11 views
6

मेरे पास एक संग्रह से जुड़ा एक combobox है, इसलिए उपयोगकर्ता आइटमों में से एक का चयन कर सकते हैं। अब तक सब ठीक है.क्या मेरे पास मेरे व्यूमोडेल में वैल्यू कनवर्टर हो सकता है?

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

मुझे इसके बारे में कैसे जाना चाहिए?

उत्तर

1

आइटम के प्रकार के अपने दृश्य मॉडल में एक अवलोकन संग्रह बनाएं। इस दृश्य संग्रह में अपने व्यूमोडेल के आइटम्ससोर्स को बाध्य करें।

public class Item 
{ 
public String description {get;set;} 
public String language {get;set;} 
public override ToString() 
{ 
     return description; 
} 
} 

चयनित आइटम आइटम प्रकार की संपत्ति के साथ भी बाध्य होगा।

ToString का ओवरराइड विवरण प्रदर्शित करता है।

चयनित आइटम प्रोपरी में चयनित ऑब्जेक्ट प्रॉपर्टी का संदर्भ होगा जहां से आप भाषा प्राप्त कर सकते हैं।

2

यह एक क्लासिक उदाहरण है कि व्यूमोडेल क्यों मौजूद है - आप तर्क चाहते हैं जो त्रिभुज दृश्य में राज्य के साथ-साथ मुख्य मॉडल पर निर्भर करता है।

कल्पना कीजिए कि आप इस व्यवहार के लिए व्यूमोडेल के खिलाफ चलाने के लिए एक यूनिट परीक्षण लिख रहे हैं। चयनित आइटम पर मैप की गई संपत्ति रखने के लिए आपको ViewModel की आवश्यकता होगी। व्यूमोडेल में एक और संपत्ति होगी जो आपके द्वारा उल्लिखित व्यूमोडेल में इस चयनित आइटम के साथ-साथ अन्य मान के हिसाब से बदलती है।

मैं ViewModel डिजाइन को परीक्षण संचालित दृष्टिकोण के रूप में इस के बारे में सोच - यदि आप एक इकाई परीक्षण तो यह मूल्यांकन करने के लिए आप राज्य के मिश्रण नहीं मिला है और इंटरफेस सही प्रकाशित किया है नहीं लिख सकते हैं।

तो, हाँ, व्यूमोडेल समस्या का समाधान कर सकता है और यदि आप सभी राज्यों को इसमें डाल देते हैं तो आप व्यूमोडेल के भीतर एकीकरण कर सकते हैं।

+0

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

+0

क्या आप इस अन्य मूल्य के अनुसार कॉम्बो के लिए विवरणों का पूरा सेट बदलना चाहते हैं? –

+0

क्षमा करें एंडी, मुझे आपकी टिप्पणी याद आई। हां, मुझे बदलने के लिए विवरणों के पूरे सेट की आवश्यकता है। मैं इसे करने के कुछ तरीकों के बारे में सोच सकता हूं, उनमें से कोई भी विशेष रूप से अच्छा नहीं है :) –

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