2010-05-28 12 views
13

में उपयोगकर्ता नियंत्रण से घटनाओं को संभालना मैं एमवीवीएम पैटर्न (दोनों मेरे लिए नई तकनीकें) का उपयोग कर एक डब्ल्यूपीएफ एप्लीकेशन बना रहा हूं। मैं पुन: प्रयोज्य कार्यक्षमता के सरल बिट्स के लिए उपयोगकर्ता नियंत्रण का उपयोग करता हूं जिसमें व्यावसायिक तर्क, और एमवीवीएम पैटर्न अनुप्रयोग तर्क बनाने के लिए नहीं है। मान लीजिए कि एक दृश्य में मेरा उपयोगकर्ता नियंत्रण होता है जो घटनाओं को सक्रिय करता है, और मैं उस ईवेंट में इवेंट हैंडलर जोड़ना चाहता हूं। वह ईवेंट हैंडलर दृश्य के दृश्य मॉडल में होना चाहिए, क्योंकि इसमें व्यावसायिक तर्क शामिल है। सवाल यह है - देखें और दृश्य मॉडल केवल बाध्यकारी से जुड़े हुए हैं; मैं बाध्यकारी का उपयोग कर एक ईवेंट हैंडलर कैसे कनेक्ट करूं? क्या यह भी संभव है (मुझे संदेह नहीं है)? यदि नहीं - मुझे दृश्य मॉडल में नियंत्रण से घटनाओं को कैसे संभालना चाहिए? शायद मुझे आदेशों का उपयोग करना चाहिए या INotifyPropertyChanged?डब्ल्यूपीएफ - दृश्य मॉडल

उत्तर

11

आम तौर पर, यह कोड में कोड से बचने के लिए एक अच्छा एमवीवीएम-अभ्यास है, जैसा कि यदि आप अपने उपयोगकर्ता नियंत्रण में ईवेंट का उपयोग करते हैं तो यह मामला होगा। तो जब संभव हो, INotifyPropertyChanged और ICommand का उपयोग करें।

इसके साथ ही, आपके प्रोजेक्ट के आधार पर और आप कितने व्यावहारिक हैं, कुछ बार यह नियंत्रण के कोड का उपयोग करने के लिए और अधिक समझ में आता है। यहाँ खोजने के लिए इस और कार्यान्वयन के बारे में

private void textBox1_MouseDoubleClick(object sender, MouseButtonEventArgs e) 
{ 
    MyViewModel vm = this.DataContext as MyViewModel; 
    vm.MethodToExecute(...); 
} 

तुम भी Attached Command Behaviour विचार कर सकते हैं, अधिक जानकारी:

मैं कुछ अवसरों पर है कुछ इस तरह इस्तेमाल किया

Firing a double click event from a WPF ListView item using MVVM

+0

नियंत्रण पुन: प्रयोज्य होना चाहिए, इसलिए कोड काम नहीं चलेगा - यह एक विशिष्ट दृश्य मॉडल पर नियंत्रण संबंध है। आदेश ... शायद नहीं - वे उपयोगकर्ता कार्यों के लिए अधिक हैं। INotifyProperty फिर बदल दिया? धन्यवाद :) – Vitaly

+0

अधिक विशिष्टताओं को जानने के बिना मेरे लिए कहना मुश्किल है। लेकिन मैंने संबंधित जानकारी – ThomasAndersson

+0

@Vitaly के कुछ लिंक में जोड़ा है यदि आप स्पष्ट व्यूमोडेल पर दृश्य डालने के बारे में चिंतित हैं, तो आप व्यूमोडेल को इंटरफ़ेस में लपेट सकते हैं। मैं संलग्न कमांड व्यवहार में देखता हूं वे स्वीकार्य अभ्यास बन रहे हैं। इसके अलावा, एमवीवीएमएल या कैलिब्रर्न को अपने एमवीवीएम काम में सहायता के लिए ढांचे के रूप में देखें, इससे आपको जीवन अधिक आसान बना देगा। – Agies

0

XAML के साथ एमवीवीएम में आईसीओएमएंड का उपयोग करना।

http://johnpapa.net/5-simple-steps-to-commanding-in-silverlight

(MVVM VVMM रूप acronym'd चाहिए किया गया: देखें, देखें मॉडल, मॉडल, भी बेहतर लग रहा है :))

संबंधित मुद्दे