2009-04-07 11 views
5

हमारे डब्ल्यूपीएफ एप्लिकेशन में हम बुनियादी एमवीवीएम पैटर्न का उपयोग करना चाहते हैं। हम इसकी चर्चा कर रहे थे और व्यूमोडेल/व्यू रिलेशनशिप और सत्यापन के बारे में कुछ अनिश्चितताएं आईं। क्या आप कहेंगे कि निम्नलिखित इसकी अच्छी समझ है?व्यू मॉडेल/रिश्ते और सत्यापन देखें

  • हर दृश्य में से एक है और केवल एक ViewModel और ViewModel का उद्देश्य डेटा और अपने दृश्य की घटनाओं और आदेशों के सभी संभाल के साथ अपने दृश्य प्रदान करना है। (ऐसे मामले हैं, जहां एक ViewModel सेवाओं दो दृश्य, जैसे एक मानक XAML इनपुट फार्म देख सकते हैं और एक CSV आयात जो फार्म के रूप में एक ही डेटा प्रदान करता है और इस प्रकार एक ही मान्यता की जरूरत है?)

  • मान्यता केवल नियंत्रित किया जाता है उदाहरण के दौरान ViewModel द्वारा दृश्य एक ChangedFocus या SaveButtonPressed घटना, आदि फेंकता

  • मॉडल सुंदर गूंगा, बस डेटा संरचना डेटाबेस से एक या एक से अधिक तालिकाओं के आधार पर है, लेकिन जा रहा है मॉडल स्वयं ऐसा नहीं करता है उदाहरण के लिए सत्यापन संभाल लें। यह व्यूमोडेल भी है जो ऑब्जेक्ट्स के अवलोकन योग्य चयन को बनाता है और रखता है। "ग्राहक" और मॉडल खुद ही नहीं।

कोई भी प्रतिक्रिया की सराहना की।

उत्तर

5

हर दृश्य में से एक है और केवल एक ViewModel

मुझे लगता है कि अगर आप पैटर्न के अपने निम्नलिखित के बारे में सख्त हैं तो प्रत्येक दृश्य सिर्फ एक ViewModel होगा। हमारे पास हमारे आवेदन में एक मामला है जहां आवश्यकताओं को मिड-स्ट्रीम बदल दिया गया है और व्यू संदर्भ दो अलग-अलग व्यूमोडल्स को देखना सबसे आसान था। इस पर निर्भर करते हुए कि आप पैटर्न को कैसे लागू करते हैं, यह संभव हो सकता है या नहीं भी हो सकता है।

कि ऐसे मामले हैं, जहां एक ViewModel सेवाओं दो दृश्य

हाँ, इस पद्धति के लाभों में से एक है।

मान्यता ViewModel

ज़रूरी नहीं है के द्वारा ही नियंत्रित किया जाता है। हमने चुना है कि हमारे मॉडल वर्ग IDataErrorInfo को कार्यान्वित करें और स्वयं सत्यापन करें। यह बीमा करता है कि कोई फर्क नहीं पड़ता कि मॉडल वर्ग का सत्यापन कब किया जाता है। अगर सत्यापन को बदलने की जरूरत है तो यह केवल एक ही स्थान पर है।

मॉडल सुंदर गूंगा

है यह केवल के रूप में गूंगा के रूप में आप इसे होना चाहते है। यदि आप चाहें तो मॉडल में सत्यापन और व्यावसायिक नियम शामिल कर सकते हैं।

1

कि ऐसे मामले में जहां एक ViewModel सेवाओं दो दृश्य

चमड़ी अनुप्रयोगों इस क्षमता का लाभ उठाने कर सकते हैं।

मॉडल सुंदर गूंगा है, लेकिन मॉडल ही मान्यता प्रबंधन नहीं करती है

मॉडल के रूप में स्मार्ट के रूप में आप की तरह हो सकता है। और इसमें अखंडता सुनिश्चित करने के लिए "सत्यापन" शामिल हो सकता है, लेकिन उस सत्यापन में यूआई में सामने आने वाले संदेशों को शामिल नहीं किया जाएगा।

3

मैं उपरोक्त सभी के साथ सहमत हूं। सिर्फ एक टिप्पणी: आपका व्यू मॉडल अंदर एक और दृश्य मॉडल का उपयोग कर सकते हैं। इस दृष्टिकोण का उपयोग करके आप अपने दृश्य को दो क्षेत्रों में विभाजित कर सकते हैं जिन्हें विभिन्न दृश्य मॉडल के साथ परोसा जाता है। बस ContentPresenter का उपयोग करें, इसे आवश्यक दृश्य मॉडल प्रॉपर्टी (जो आवश्यक दृश्य मॉडल प्राप्त करता है) पर बाध्य करें और अपने दृश्य मॉडल के साथ आवश्यक दृश्य को जोड़ने के लिए डेटा टेम्पलेट का उपयोग करें।

+0

हाँ मैंने इसे कई उदाहरणों में देखा है जहां व्यूमोडेल में व्यूमोडल्स का संग्रह है, अच्छा अनुस्मारक, धन्यवाद –

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