2009-05-14 29 views

उत्तर

49

डब्ल्यूपीएफ में रिले कमांड मौजूद नहीं है, यह केवल एक बाहरी वर्ग है जो इसे this MSDN article में परिभाषित करने के बाद प्रमुखता के लिए उठाया गया है। यदि आप इसका उपयोग करना चाहते हैं तो आपको इसे स्वयं लिखना होगा।

अन्यथा आप डब्ल्यूपीएफ टूलकिट here से प्रतिनिधि आदेश कर सकते हैं जिसमें रिलेकॉमैंड कोड पर थोड़ी सी अतिरिक्त कार्यक्षमता है।


आह, सवाल यह बदल रहा था जब मैं यह जवाब लिख रहा था। मान लीजिए कि आप ऊपर परिभाषित रिलेकॉमैंड का उपयोग कर रहे हैं, आपको इसे एक या दो प्रतिनिधियों के साथ आपूर्ति करने की आवश्यकता है, जो एक बूल देता है जो यह निर्धारित करता है कि आदेश वैध राज्य में चल रहा है या दूसरा जो कुछ भी नहीं देता है और वास्तव में चलता है आदेश। यदि आप "कैन्रुन" प्रतिनिधि को आपूर्ति नहीं करते हैं तो कमांड इस बात पर विचार करेगा कि यह हमेशा वैध स्थिति में है। लेख में इस्तेमाल कोड:

RelayCommand _saveCommand; 
public ICommand SaveCommand 
{ 
    get 
    { 
     if (_saveCommand == null) 
     { 
      _saveCommand = new RelayCommand(param => this.Save(), 
       param => this.CanSave); 
     } 
     return _saveCommand; 
    } 
} 

एक RelayCommand कि सहेजें() विधि जब शुरू हो रहा कॉल और वैधता के लिए एक परीक्षण के रूप CanSave संपत्ति वापस आ जाएगी की घोषणा:। जब यह आदेश WPF में एक बटन से जुड़ा होता है तो बटन की IsEnabled प्रॉपर्टी ViewModel की CanSave प्रॉपर्टी से मेल खाती है और जब बटन क्लिक किया जाता है (माना जाता है कि यह सक्षम है) SaveModel पर सेव() विधि को कॉल किया जाएगा।

+1

मुझे इसका लाभ था क्योंकि मैंने कल इस जवाब के लिए इसे देखा: http://stackoverflow.com/questions/858268/in-mvvm-what-is-the-best-way- के लिए-देखने-से-जवाब-से-उपयोगकर्ता-क्रिया-इन-द/858303 # 858303 –

+3

मेरी इच्छा है कि एमएसडीएन के लेख कोड नमूने सभी एक साथ झुकाए नहीं गए थे, इस तरह के महीनों के लिए, किसी को भी दर्पण या कुछ पता है जो उन्हें सामान्य दिखाता है? –

+0

गलत/पुराना दिनांक रिले कमांड मौजूद है, लेकिन यह https://mvvmlight.codeplex.com/ टूलकिट – MikeT

7

अपने सभी तरीकों के लिए RelayCommand रैपर बनाने के विकल्प के रूप में, मैं एक निःशुल्क लाइब्रेरी और स्रोत सुझा सकता हूं जो आपको बाध्यकारी {BindTo Save()} का उपयोग करने की अनुमति देगा। मैंने इसे अपनी बाइंडिंग को सरल बनाने के लिए बनाया है। यह सापेक्ष बाध्यकारी भी बहुत आसान बनाता है। आप इसे यहां पा सकते हैं: http://www.simplygoodcode.com/2012/08/simpler-wpf-binding.html

+2

का एक हिस्सा बहुत अच्छा लगता है, हालांकि इसका परीक्षण नहीं किया गया। लेकिन मेरा सुझाव है कि आप ब्लॉग पोस्ट में सुधार करें और कार्यान्वयन के विवरणों की व्याख्या करें। हालांकि गीथूब को कोड पोस्ट करना बहुत अच्छा होगा। और StackOverflow पर इस उत्तर पर अधिक (कुछ!) कोड डालने पर भी विचार करें। गिटहब (या इसी तरह) पर कोड पोस्ट करने के लिए @ MD.Unicorn के सुझाव के लिए –

+0

+1। यह भी अच्छा होगा अगर पुस्तकालय NuGet पैकेज के रूप में उपलब्ध था। –

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