मैं एक आम नियंत्रण है कि मैं अपने पृष्ठों पर पुन: उपयोग करने में सक्षम हो जाएगा बनाने देख रहा था: एक AddressControl जो पता 1, पता 2, शहर, राज्य, ज़िप, आदि है ...डब्ल्यूपीएफ सर्वोत्तम व्यवहार: क्या कस्टम नियंत्रण एमवीवीएम डिज़ाइन के साथ अच्छी तरह से काम करते हैं?
मूल रूप से मैं सिर्फ एक श्रेणी का निर्माण (AddressEntity
) जिसमें इन सभी वस्तुओं को शामिल किया गया था और INotifyPropertyChanged
लागू किया गया था। मैंने उस कोड को मेरे कोड में डिस्पेंडेंसी प्रॉपर्टी के रूप में एड्रेस कंट्रोल के लिए शामिल किया और इसे अपनी गुणों के लिए बाइंडिंग के लिए डेटाकॉन्टेक्स्ट के रूप में उपयोग किया।
फिर, किसी ने कहा कि मेरा कोड बदसूरत था और मुझे एमवीवीएम देखना चाहिए। यह को देखते हुए, मुझे लगता है कि:
- AddressEntity.cs सिर्फ डेटा (यानी पता 1, पता 2, आदि) और सदस्य (यानी क्लोन, ToString, आदि)
- मैं कुछ की जरूरत है की एक कंटेनर हो जाएगा पताViewModel मेरी पता एंटीटी को लपेटने और प्रॉपर्टी नोटिफिकेशन चेंज, वैलिडेशन इत्यादि प्रदान करने के लिए
- मुझे इसके लिए किसी "दृश्य" की आवश्यकता है।
समस्या यह है कि मैंने जो भी उदाहरण देखा है, वह एक उपयोगकर्ता नियंत्रण है जो कस्टम कंट्रोल नहीं है। इससे पहले कि मैं इस में बहुत गहराई से डील करता हूं ...
- क्या इस उदाहरण के लिए एमवीवीएम + कस्टम कंट्रोल का उपयोग करना संभव है?
- क्या यह उपयोगकर्ता कंट्रोल बनाम कस्टमकंट्रोल के प्राथमिक अंतरों के अपवाद के साथ दृश्य के रूप में एक ही चीज़ (UserControl बनाम कस्टमकंट्रोल) है? असल में, क्या मेरा कस्टम कंट्रोल वास्तव में सिर्फ एक दृश्य है?
संदर्भ: The Model-View-ViewModel (MVVM) Design Pattern for WPF
देखें नीचे दो जवाब एक-दूसरे के विपरीत होने लगते हैं। मैं अब उलझन में हूं ... खासकर जब से दूसरा जवाब अधिक संभावना लगता है, लेकिन पहले जवाब में (अब तक 3 वोट) हैं। –
मैं एनवीएम से सहमत हूं। मैंने व्यक्तिगत रूप से महसूस किया है कि कस्टम नियंत्रण और एमवीवीएम एक साथ अच्छी तरह से नहीं जा सकता है। आपके पास एक ही प्रोजेक्ट में सीसी और यूसी है लेकिन मैं अपने सीसीएवरस के लिए वीएम रखने के बारे में नहीं सोच सकता क्योंकि यूसी के लिए वीएम समझ में आता है। – akjoshi
@akjoshi मुझे नहीं पता कि क्यों शुद्ध WPF और MVVM का एक-दूसरे के साथ कुछ लेना देना है। वास्तव में कोई फर्क नहीं पड़ता कि कस्टम या उपयोगकर्ता नियंत्रण आपको एमवीवीएम का उपयोग करने की आवश्यकता नहीं है और मैं यह भी कहूंगा कि उपयोगकर्ता या कस्टम नियंत्रण बनाते समय आपको एमवीवीएम का उपयोग नहीं करना चाहिए। लेकिन इन नियंत्रणों का उपयोग करके हाँ, एमवीवीएम उनका उपयोग करने का एक अच्छा तरीका है। मुझे लगता है कि "अब मैं व्यवसाय तर्क बना देता हूं और एमवीवीएम का उपयोग करता हूं" और "अब मैं नियंत्रण बनाता हूं और एमवीवीएम के बारे में कभी नहीं सुना" के बीच अंतर करना आसान है। उदाहरण के लिए, हमने नोड्स कनेक्शन आदि के साथ एक पूर्ण ग्राफ नियंत्रण बनाया है जो सभी कस्टम नियंत्रण हैं, लेकिन इस नियंत्रण का उपयोग ज्यादातर व्यूमोडल्स के माध्यम से किया जाता है। – dowhilefor