दृश्य में ( नोट: इसमें फ़ाइल दृश्य मॉडल वर्ग ( और मॉडल मॉडल के निर्माता ( AudioViewModel.cs ) में संकलन के दौरान मुझे निम्नलिखित त्रुटि हो रही है त्रुटि 8 ड्रैग कॉम्पलेटेड = "{बाध्यकारी ऑडियो स्लिपर्ड कॉमांड}" मान्य नहीं है। {बाध्यकारी ऑडियो स्लिपर्ड कॉमांड} एक वैध ईवेंट हैंडलर पद्धति नाम नहीं है। उत्पन्न या कोड-पीछे वर्ग पर केवल इंस्टेंस विधियां मान्य हैं। समस्या है आपके कोड में पीछे नहीं है, लेकिन आपके एक्सएएमएल में कहीं भी आप ऐसा करते हैं: यह XAML deserializer को इसे हल करने के लिए, यह आपके और भी बदलें से < अपने XAML में इस तरह से ऊपर काम करेगा: महत्वपूर्ण नोट आप प्रतीत होते हैं कि / code> घटना (देखें नोट नीचे देखें) ViewModel से और इसे बढ़ा, मूल घटना args पास घटनाओं, घटना संचालकों और आज्ञाओं के बारे में भ्रमित होने के लिए आपके कोड के रूप में यह खड़ा है भ्रामक है इसके साथ ही, ऐसा करने का उचित एमवीवीएम तरीका "घटना से कमांड" संलग्न व्यवहार के कुछ स्वाद का उपयोग करके किसी भी कोड-पीछे बिना भी करना संभव होगा। AudioView.xaml ) मैंने निम्न कोड लिखा है < पूर्व>
& lt; स्लाइडर नाम = "ऑडियोस्लाइडर" चौड़ाई = "200" ऊँचाई = "23" ग्रिड। कॉलम = "0" हैइससेक्शनरेंजएनेटेड = "ट्रू" आईएसएनपोटोटिकएन्टेड = "ट्रू" अधिकतम = "{बाध्यकारी पथ = कुलऑडियो प्लेलिंगसैकंड मोड = OneTime} "न्यूनतम =" 0 "शैली =" {StaticResource CustomStyleForSlider} "Thumb.DragCompleted =" {बाध्यकारी AudioSliderChangedCommand} "TickFrequency =" 1 "मान =" {बाध्यकारी पथ = ऑडियोपाषाण} "/ & gt;
AudioView.xaml.cs भी है।
AudioViewModel.cs ) में मैंने निम्न संपत्ति को परिभाषित किया है
सार्वजनिक ईवेंट DragCompletedEventHandler AudioSliderChangedCommand;
this.AudioSliderChangedCommand = नया DragCompletedEventHandler (OnAudioSliderChanged) ;
ड्रैग कॉम्पलेटेड = "{बाध्यकारी ऑडियो स्लिपर्ड कॉमांड}"
AudioSliderChangedCommand
ड्रैग कॉम्पलेटेड ईवेंट के लिए हेन्डलर हालांकि,
ऑडिओ स्लिपर्ड कॉमांड उपयुक्त हस्ताक्षर (जिसे एक हैंडलर के रूप में जोड़ा जा सकता है) के साथ एक विधि नहीं है और यह आपके दृश्य वर्ग में नहीं है और अंत में, आप ईवेंट नियंत्रकों के लिए
बाइंडिंग का उपयोग नहीं कर सकते।
View में सरल समाधान है: < / P>
निजी शून्य DragCompletedEventHandler (ऑब्जेक्ट प्रेषक, DragCompletedEventArgs ई) {var viewModel = (YourViewModelType) this.DataContext; देखेंमॉडेल.ऑनऑडियो स्लाइडर परिवर्तित (यह, ई); }
ड्रैग कॉम्पलेटेड = "{बाध्यकारी ऑडियो स्लिपर्ड कॉमांड}"
ड्रैग कॉम्पलेटेड उठाया जाता है, तो विधि
View.DragCompletedEventHandler को कॉल किया जाएगा
AudioSliderChangedCommand <
ऑडियोस्लाइडर चेंगल कॉमांड एक
इवेंट है, लेकिन इसका नाम सुझाता है कि यह एक
ICommand है। उचित नाम होगा
ऑडियोस्लाइड बदल दिया गया ।
DelegateCommand (सभी सभ्य MVVM फ़्रेमवर्क) एक; मैं प्रिज्म में कार्यान्वयन के लिए कक्षा का नाम प्रयोग किया था)। फिर, मान लें कि
AudioSliderChangedCommand वास्तव में एक कमांड है, आपके दृश्य में कोड-पीछे होगा:
निजी शून्य DragCompletedEventHandler (ऑब्जेक्ट प्रेषक, DragCompletedEventArgs ई) {var viewModel = (YourViewModelType) this.DataContext; viewModel.AudioSliderChangedCommand.Execute (); }
Comments
Post a Comment