c# - Rig up a Command -
मेरे पास बटन पर एक कमांड पैरामीटर सेट किया गया है:
& lt; hw: एक्शनबटन सामग्री = "एमसी" कमांड = "{बाध्यकारी एक्शन कॉमांड}" कमांडपैमेटर = "{x: स्टेटिक एचडब्ल्यू: एक्शन। मेमोरी क्लेयर}" ग्रिड। रॉ = "2" ग्रिड। कॉलम = "0" / & gt;
आदेश वर्ग में है:
सार्वजनिक वर्ग ActionCommand: ICommand {निजी पढ़ने के लिए कैलक्यूलेटर ViewModel _viewModel; सार्वजनिक एक्शन कॉमांड (कैलक्यूलेटर व्यू मॉडेल देखेंमॉडेल) {_viewModel = viewModel; } सार्वजनिक बूल CanExecute (वस्तु पैरामीटर) {वापसी _viewModel! = नल & amp; amp; पैरामीटर क्रिया है; } सार्वजनिक शून्य निष्पादित करें (ऑब्जेक्ट पैरामीटर) {_viewModel.ProcessAction ((एक्शन) पैरामीटर); } सार्वजनिक कार्यक्रम इवेंटहान्डलर CanExecuteChanged; }
अब मुझे पता है कि कमांडम्स को ViewModel में होना चाहिए, तो मैं इस आदेश को ViewModel में कैसे जोड़ूँ? क्या मुझे इसे एक्शन कॉमेंट
नामक व्यू मॉडेल में एक उदाहरण है, जो काम करने के लिए प्रतीत नहीं होता, या मुझे क्या करना चाहिए?
यहां समान के लिए एक नमूना है
वर्ग कैलक्यूलेटर दृश्यमॉडल {सार्वजनिक कैलक्यूलेटर व्यू मॉडेल () {ActionCommand = नई एक्शन कॉमांड (यह); ...} सार्वजनिक ऐक्शन कॉमेंट एक्शन कॉमांड {get; निजी सेट; } ...}
उपरोक्त एक सरल नमूना है जो कमांड के लिए संपत्ति का प्रदर्शन करता है जो कि यूआई में बटन के लिए बाध्य किया जा सकता है
यहां ध्यान दें कि बाइंडिंग सार्वजनिक गुणों के साथ ही काम करता है, सार्वजनिक वैरिएबल एक ही तरीके से काम नहीं करता।
एक सुझाव के रूप में आप कुछ का उपयोग कर सकते हैं यदि आप अधिक समान आदेश बनाने जा रहे हैं।
कैनएक्सेक्यूट चेंजेड क्या है?
से
क्योंकि डिफ़ॉल्ट WPF के द्वारा यह पता नहीं है कि आपकी कस्टम आईसीमांड ऑब्जेक्ट मौजूद हैं। यह कैसे होगा?
सौभाग्य से इस समस्या का आसान समाधान है। अपने ICommand कार्यान्वयन में, आप CanExecuteChanged ईवेंट कमांडमेनैजर की RequerySuggested ईवेंट को हुक कर सकते हैं।
नमूना
सार्वजनिक इवेंट इवेंटहान्डलर कैनक्सिक्यूट चेंजेड {add {CommandManager.RequerySuggested + = value; } निकालें {CommandManager.RequerySuggested - = मान; }}
Comments
Post a Comment