उदाहरण # 1: मेरे पास मेरे MVVM एप्लिकेशन में प्रदर्शित दृश्य है (चर्चा के उद्देश्यों के लिए सिल्वरलाइट का उपयोग करें) और मैं एक बटन पर क्लिक करता हूं जो मुझे एक नए पृष्ठ पर ले जाना चाहिए।
उदाहरण # 2: उसी दृश्य में एक और बटन होता है, जिसे क्लिक करने पर, एक चाइल्ड विंडो (डायलॉग) में विवरण दृश्य को खोलना चाहिए।
हमें पता है कि हमारे ViewModel द्वारा कमांड ऑब्जेक्ट होंगे जो उपयोगकर्ता के क्लिक का जवाब देने वाले तरीकों के साथ बटन से बंधे होंगे। लेकिन, फिर क्या? हम कार्रवाई कैसे पूरी करेंगे? यहां तक कि अगर हम एक तथाकथित नैविगेशन सर्विस का उपयोग करते हैं, तो हम इसे क्या बता रहे हैं?
अधिक विशिष्ट होने के लिए, एक पारंपरिक व्यू-प्रथम मॉडल (जैसे URL पर आधारित नेविगेशन योजनाएं जैसे वेब या SL अंतर्निहित नेविगेशन फ्रेमवर्क में) कमांड ऑब्जेक्ट्स को यह जानना होगा कि आगे क्या प्रदर्शन करना है। जब पैटर्न द्वारा प्रचारित चिंताओं के अलगाव की बात आती है तो यह रेखा पार करने लगता है।
दूसरी ओर, यदि बटन को कमांड ऑब्जेक्ट पर वायर्ड नहीं किया गया था और हाइपरलिंक की तरह व्यवहार किया गया था, तो नेविगेशन नियमों को मार्कअप में परिभाषित किया जा सकता है। लेकिन क्या हम चाहते हैं कि दृश्य अनुप्रयोग के प्रवाह को नियंत्रित करें और व्यवसाय तर्क का सिर्फ एक और प्रकार नेविगेशन न करें? (मैं कुछ मामलों में हां कह सकता हूं और दूसरों में नहीं।)
मेरे लिए, MVVM पैटर्न का यूटोपियन कार्यान्वयन (और मैंने दूसरों को इस बारे में सुना है) के लिए ViewModel को इस तरह से वायर्ड किया जाएगा कि एप्लिकेशन हेडलेस (यानी नो व्यू) चला सके। यह कोड-आधारित परीक्षण के लिए सबसे अधिक सतह क्षेत्र प्रदान करता है और दृश्य को अनुप्रयोग पर एक सच्ची त्वचा बनाता है। और मेरे ViewModel का ध्यान नहीं रखना चाहिए अगर यह मुख्य विंडो, एक फ्लोटिंग पैनल या एक चाइल्ड विंडो में प्रदर्शित हो, तो क्या यह होना चाहिए?
इस मूल्यांकन के अनुसार, यह रनटाइम में कुछ अन्य तंत्र पर निर्भर है कि प्रत्येक ViewMelel के लिए क्या दृश्य प्रदर्शित किया जाना चाहिए। लेकिन क्या होगा यदि हम एक दृश्य को कई ViewModels या इसके विपरीत साझा करना चाहते हैं?
तो View-ViewModel संबंध को प्रबंधित करने की आवश्यकता को देखते हुए, ताकि हम यह जान सकें कि बाल खिड़कियों / संवादों को प्रदर्शित करने सहित विचारों के बीच नेविगेट करने की आवश्यकता के साथ-साथ हम MVVM पैटर्न में वास्तव में इसे कैसे पूरा करते हैं?