मैं व्यक्तिगत रूप से एमवीवीएम को लाभ के रूप में नहीं देखता हूं, लेकिन उन लोगों के लिए दायित्व के रूप में जो डब्ल्यूपीएफ कूल फीचर्स का उपयोग करना चाहते हैं।
मॉडल से यूआई को अलग करने के लिए, डब्ल्यूपीएफ कोर पर बाध्यकारी डेटा के साथ बहुत अधिक बनाया गया है। लेकिन जिस तरह से डेटा बाइंडिंग तकनीकी रूप से WPF में किया जाता है कुछ हद तक खास है, के रूप में यह की तरह वर्गों से जुड़ा हुआ है:
- DependencyProperty
- इस वजह से INotifyPropertyChanged
- ObservableCollection
तुम सिर्फ नहीं कर सकते मानक .NET तकनीक का उपयोग करके आप वास्तव में एक मॉडल लिखना चाहते हैं। उदाहरण के लिए, डब्ल्यूपीएफ ट्री व्यू डेटा बाध्यकारी और टेम्पलेट्स का उपयोग करके w/o का उपयोग करना लगभग असंभव है। उदाहरण के लिए आप Winforms में एक सामान्य मॉडल से बस इसे पॉप्युलेट नहीं कर सकते हैं। यह एक नोड के बच्चों का प्रतिनिधित्व करने के लिए ObservableCollection का उपयोग कर एक पदानुक्रमित मॉडल के लिए बाध्य होना चाहिए।
तो मान लें कि वी एक्सएएमएल कोड का प्रतिनिधित्व करता है और यह कोड-पीछे समकक्ष है (इसलिए यह एक तकनीक के रूप में डब्ल्यूपीएफ से जुड़ा हुआ है), और मान लें कि एम आपके मॉडल का प्रतिनिधित्व करता है (इसलिए यह किसी भी तरह से डब्ल्यूपीएफ यूआई तकनीक से जुड़ा नहीं है)।
ठीक है, आप कभी नहीं यह केवल इन वी & एम
आप दोनों के बीच कुछ जोड़ना होगा साथ WPF के तहत ठीक से काम करना होगा। ऐसा कुछ जो WPF- संगत है और आपके मॉडल को समझता है। कुछ जो निर्भरताप्रदर्शन बोलता है, अवलोकन योग्य चयन और INotifyPropertyChanged। यही वही है जिसे वीएम कहा जाता है।
एक साइड नोट के रूप में, एमवीवीएम का एक विकल्प वी & एम (डब्ल्यू/ओ वीएम प्लंबिंग) संयोजन बनाने के लिए एम के साथ डब्ल्यूपीएफ-संगत है लेकिन अभी भी एक उचित यूआई स्वतंत्रता के साथ है। ऐतिहासिक रूप से, ObservableCollection WindowsBase.dll असेंबली में था (जिसे डब्ल्यूपीएफ के साथ भेज दिया गया था), इसलिए यह वास्तव में एक यूआई तकनीक से जुड़ी चीज़ के लिए एक सामान्य मॉडल को बांधने के लिए अजीब लग रहा था। इसे तब से System.dll पर ले जाया गया है। फिर भी, कभी-कभी एक शुद्ध वीएम मॉडल w/o को विशेष रूप से WPF के लिए एम tweaking रखने के लिए मुश्किल है ...
स्रोत
2016-01-03 08:18:03
मैं हमेशा एमवीवी की विविधता के रूप में एमवीवीएम देखा। –