एक ओर से, व्यूमोडेल मॉडल ऑब्जेक्ट के लिए एक रैपर हो सकता है और प्रेजेंटेशन विवरण के साथ इसे बढ़ा सकता है। उदाहरण के लिए, यदि आपके पास मॉडल ऑब्जेक्ट - पेन है, तो PenViewModel में IsSelected, IsDragging गुण आदि शामिल हो सकते हैं। यह व्यूमोडेल रैपर के रूप में है।
दूसरी तरफ से, ViewModel दृश्य पर एक अमूर्त जो विशेष रूप से नियंत्रण के संदर्भ में शामिल नहीं है हो सकता है। यह मत भूलना कि एमवीवीएम का उद्देश्य इकाई परीक्षण है। तो उदाहरण के लिए, आपके चित्रकला अनुप्रयोग में आपके पास खींचने योग्य बार हैं। तो आप व्यूमोडल्स के सेट के साथ इस फीचर को सार कर सकते हैं: BarViewModel {IsSnapped, Position, IsEnabled}, BrushBarViewModel: BarViewModel, PenBarViewModel इत्यादि। और फिर आप इस सुविधा को यूनिट परीक्षणों के साथ कवर कर सकते हैं, लेकिन इन सभी चीजों का मॉडल से कोई संबंध नहीं है। यह व्यूमोडेल देखें अबास्ट्रक्शन के रूप में।
मॉडल बहुत मास्टर ऑफ बिजनेस के करीब है, संस्थाओं, सेवाओं लागू करने के लिए मास्टर ऑफ बिजनेस संस्थाओं और तर्क, कक्षाओं में शामिल है। आप अपने मॉडल में विभिन्न अवधारणाओं का उपयोग कर सकते हैं, उदा। डीडीडी (डोमेन-ड्राइव-डिजाइन), फावलर एंटरप्राइज़ पैटर्न, सीक्यूआरएस (कमांड क्वेरी जिम्मेदारी पृथक्करण), एसओए (सेवा ओरिएंटेड आर्किटेक्चर)। ViewModel (मॉडल) तंत्र, पीछे कोड में सबसे खराब स्थिति बाध्यकारी PresentationModel पैटर्न में के रूप में उपयोग करने के साथ
देखें syncronizes राज्य।इस पर
अड्डों, अपने प्रश्नों के जवाब देने वाला हो जाता है:
लोड/एक XAML फाइल करने के लिए/से चित्रों को बचाने के लिए मॉडल की आपूर्ति कार्यों करता है?
नहीं। मॉडल के पास किसी भी XAML फ़ाइलों का प्रत्यक्ष संदर्भ नहीं है।
कि मॉडल उजागर (रंग, चौड़ाई, स्थिति आदि) गुणों के ViewModel बाँध करता है?
सं। बाध्यकारी दृश्य सिंक्रनाइज़ेशन का तंत्र है। तो आपको उन गुणों को देखने के लिए बाध्य करने की जरूरत है। आप सीधे मॉडल, या ViewModel wrapper पर सीधे बाध्य कर सकते हैं।
क्या मॉडल में या व्यूमोडेल में सत्यापन होता है?
Wherenever। यदि आपका नियंत्रण समर्थन सत्यापन आप दृश्य परत पर मान्य कर सकते हैं, उदा। डेटटाइम पिकर गलत तिथि चुनने की अनुमति नहीं देता है। आप ViewModel में कस्टम सत्यापन तर्क लिख सकते हैं और इसे यूनिट परीक्षणों के साथ कवर कर सकते हैं। साथ ही, अतिरिक्त स्तर के रूप में, मॉडल स्तर पर सत्यापन हो सकता है, क्योंकि मॉडल अमान्य स्थिति में नहीं हो सकता है।
मैं चर्चा ViewModel करने के लिए मॉडल में हो रहा परिवर्तन डेटा को उजागर तो वे बाध्य और बाध्यकारी सामान्य डेटा के माध्यम से देखें अद्यतन किया जा सकता के बारे में न्यायसंगत लगता है। आपको डेटा स्तर के बारे में सोच रहे हैं, तो यह डेटा को बनाए रखने डेटा है कि करने की प्रक्रिया में खींच लिया की स्थिति पर मैट्रिक्स के लिए होता है (एक ऑफ़लाइन डेटा संग्रह के बारे में सोच, विशेष रूप से)। वे मीट्रिक मॉडल परत में मौजूद हैं और परिवर्तन करते हैं, तो कैसे आप परिवर्तन सूचना मॉडल से ViewModel करने के लिए डेटा बाइंडिंग के लिए देखें करने के लिए धक्का होगा? – ScottCher