के अंदर बाध्यकारी कमांड मैं वर्तमान में एक छोटी WPF प्रोजेक्ट को एमवीवीएम में परिवर्तित कर रहा हूं। मेरे पास मुख्य विंडो के व्यूमोडेल में List<CustomObject>
है जो मेरे आइटम नियंत्रण प्रत्येक तत्व के यूआई को बनाने के लिए डेटा टेम्पलेट को बांधता है और उपयोग करता है। मेरे पुराने कोड ने एक क्लिक ईवेंट को संभालने के लिए DataTemplate के अंदर एक ईवेंट हैंडलर का उपयोग किया। मैं अपने कोड-बैक इवेंट हैंडलर को खत्म करने के लिए किसी प्रकार का कमांड बाध्यकारी उपयोग करना चाहता हूं, लेकिन मेरे आइटम्स कंट्रोल में आइटम्स का डेटाकॉन्टेक्स्ट मॉडल ऑब्जेक्ट है, इसलिए मैं वर्तमान में व्यूमोडेल से आईसीओएमएंड से जुड़ नहीं सकता हूं।डब्ल्यूपीएफ एमवीवीएम - एक आइटम कंट्रोल
तो, मुझे लगता है कि इस पर हमला करने के कुछ तरीके हैं और मुझे यकीन नहीं है कि यह करने का सबसे अधिक "एमवीवीएम" तरीका कौन सा होगा। क्या मैं आइटम्स कंट्रोल। इटम्ससोर्स को एक नई व्यू मॉडेल क्लास के संग्रह में जोड़ता हूं जो प्रत्येक आइटम का प्रतिनिधित्व करता है? या क्या मैं DataTemplate के बजाय UserControls का उपयोग करता हूं और फिर मैं प्रत्येक UserControl को इसे ViewModel के अपने उदाहरण में जोड़ सकता हूं जो इसका प्रतिनिधित्व करता है? या क्या कोई बाध्यकारी अभिव्यक्ति है जिसका उपयोग मैं विंडो के डेटाकॉन्टेक्स्ट को वापस देखने के लिए उपयोग कर सकता हूं ताकि व्यूमोडेल से जुड़ सकें (जैसा कि मैंने इसे टाइप किया है, यह सिर्फ खराब लगता है इसलिए मैं इसे बड़ा "नहीं" मान रहा हूं विचार)?
इसके अलावा, मैं अपने आदेश को बाध्य करना चाहता हूं वह ग्रिड नियंत्रण के वाममाउसबटनअप घटना है। ग्रिड के लिए कोई "कमांड" नहीं है, इसलिए मैं इनपुट बाइंडिंग का उपयोग करने का प्रयास कर रहा था। मैं एक स्थिर कमांड का उपयोग कर सकता हूं (जैसे कि अनुप्रयोग में निर्मित एक में से एक), लेकिन मैं एक आईसीओएमएंड उदाहरण से जुड़ने के लिए बाध्यकारी अभिव्यक्ति का उपयोग नहीं कर सकता जो कि व्यूमोडेल की संपत्ति है क्योंकि MouseBinding.Command निर्भरता प्रॉपर्टी नहीं है।
मैं एमवीवीएम में ईवेंट हैंडलिंग के विषय पर बहुत उलझन में हूं, इसलिए किसी भी और सभी जानकारी की सराहना की जाती है।