1 - मुझे विश्वास नहीं है कि यह "सही तरीका नहीं है"।
ViewModel
में Exception
उठाए गए ViewModel
तर्क का हिस्सा आमतौर पर होता है। इसलिए, MessageBox
दिखाकर "खराब रास्ता" नहीं होगा। ध्यान रखें कि एमवीवीएम का वास्तविक उद्देश्य सभी कोड-पीछे को खत्म करने के लिए नहीं है, लेकिन वास्तव में यूआई-तर्क और व्यापार-तर्क को स्पष्ट रूप से अलग करना है। व्यावसायिक ऑब्जेक्ट्स से निपटने के दौरान एक अपवाद होगा - आप इसे ViewModel
2 - वैसे भी अगर आप इस दृष्टिकोण से चिपकना चाहते हैं (मैं इसे चरमपंथी एमवीवीएम के रूप में अर्हता प्राप्त करूंगा - हे - - आप यह कर सकते हैं:
- एक सत्यापनकर्ता का उपयोग करें में प्रवेश नहीं बनाएगा एक
Exception
- एक विशिष्ट वापसी मान परिभाषित एक
Exception
होता है अगर, यानी डेटा सुनिश्चित करने के लिए (आप Binding.ValidationRules
के बारे में सुना?, नहीं करता है, तो this article should be useful for you है)। कोशिश करें, और यदि आप कभी भी पकड़ने में प्रवेश करते हैं, तो आप एक विशिष्ट त्रुटि मान वापस कर देंगे जिसका यूआई द्वारा एक त्रुटि के रूप में व्यवहार किया जाएगा (उदाहरण के लिए यदि आप इस विशिष्ट त्रुटि मान को लाल रंग में रंगने के लिए Trigger
का उपयोग कर सकते हैं फिर से लौटा दिया गया है)
वैसे भी मुझे लगता है कि जो सभी संभव कोड-पीछे को नष्ट करने और शुरू करने के लिए जटिल पैटर्न (उदाहरण के लिए संलग्न व्यवहार से एक "अतिवादी MVVM" लागू करना चाहते हैं बहुत से लोगों को देखते हैं कि ...) सिर्फ एक आवश्यकता का पालन करने के लिए जो वास्तव में मेरी राय में बकवास है। मैं नहीं कहूंगा कि मैं बिल्कुल सही हूं, लेकिन मैं एक पैटर्न के रूप में एमवीवीएम देखना पसंद करता हूं जो एक पैटर्न की तुलना में कोडिंग के मेरे तरीके को सरल बना देगा जो मुझे बुनियादी चीजों के लिए इतना दर्द पेश करेगा (उदाहरण के लिए मैंने लोगों को अटैचमेंटबैविर्स लागू करने को देखा है एक साधारण डबलक्लिक एक्शन के लिए। मैं व्यक्तिगत रूप से एक डबल इवेंट को फायरिंग करता हूं जब डबलक्लिक घटना को निकाल दिया जाता है। डबलक्लिक इवेंट को निकाल दिया जाता है। 100-लाइन क्लास + एक्सएएमएल कोड के खिलाफ कोड की 1 लाइन दूसरी तरफ के लिए, अपना पक्ष चुनें। मेरा मानना है कि एक साधारण समस्या का एक सरल समाधान होना चाहिए)
चीयर्स!
संदेश बॉक्स दिखाए जाने पर आप स्वचालित रूप से अपने 'व्यू मॉडेल' का परीक्षण कैसे कर सकते हैं? – Maxence