2009-12-10 12 views
5

WPF में कुछ कस्टम सत्यापनकर्ताओं पर काम करते समय, मेरे सहकर्मियों में से एक ने मुझे IDataErrorInfo बताया। मेरे पास एक्सएएमएल में नमूना दृश्य है जिसमें टेक्स्टबॉक्स और एक बटन है। टेक्स्टबॉक्स में मान के आधार पर मैं बटन को या तो सक्षम या अक्षम करना चाहता हूं। मेरे सहकर्मी ने सुझाव दिया कि मेरे विचार के प्रस्तुतकर्ता में IDataErrorInfo को विस्तारित करना और 'आइटम' और 'त्रुटि' गुणों के लिए कस्टम तर्क लिखना मेरी समस्या का समाधान करेगा। इससे पहले कि मैं इसे अपने कोड में शामिल कर सकूं, मैंने सोचा कि मुझे समझना चाहिए कि IDataError जानकारी कैसे काम करती है और यह इंटरफ़ेस लागू करने के बारे में क्या है जो कस्टम सत्यापन तर्क को ट्रिगर करने के लिए आवश्यक हुक प्रदान करता है? इस अवधारणा के साथ कुछ मदद बेहद उपयोगी होगी!IDataErrorInfo क्या है और यह WPF के साथ कैसे काम करता है?

उत्तर

4

IDataErrorInfo एक इंटरफ़ेस है जो एक वर्ग एक विशिष्ट संपत्ति के लिए त्रुटि जानकारी के ग्राहकों को सूचित करने के साथ-साथ कक्षा स्तर पर त्रुटियों को सूचित करने के लिए कार्यान्वित कर सकता है।

यदि आप कक्षा के लिए इसे लागू करते हैं जो आपके डेटाकॉन्टेक्स्ट (यानी: एमवीवीएम में व्यूमोडेल) के रूप में उपयोग किया जाता है, तो आप अपडेट्स के लिए अपडेटऑन वैधता त्रुटि को सेट कर सकते हैं, और त्रुटियों में आइटम को अलग-अलग प्रदर्शित करने के लिए एक कस्टम टेम्पलेट सेट कर सकते हैं। डब्ल्यूपीएफ आपके लिए नलसाजी संभालती है।

यहां एक short tutorial showing the entire process है।

+0

त्वरित प्रतिक्रिया के लिए धन्यवाद refactorthis.net पर सीधे बिंदु ट्यूटोरियल लिखा था। मैं वास्तव में सोच रहा था कि वायरिंग दृश्यों के पीछे कैसे काम करती है। डब्ल्यूपीएफ दुनिया में नया होने के नाते, मैं सोच रहा था कि रनटाइम वास्तव में कैसे जानता है कि IDataErrorInfo को विस्तारित करने से सत्यापन ट्रिगर होगा। आपकी व्याख्या बहुत मदद करता है लेकिन मैं अभी भी थोड़ा उलझन में हूं कि चीजें कैसे सभी एक साथ वायर्ड हैं। –

+1

मूल रूप से, यदि आप UpdateOnValidationError में डालते हैं, किसी भी समय कोई संपत्ति बदलती है (जो WPF को INotifyPropertyChanged या निर्भरता गुण तंत्र के माध्यम से जानता है), यह उस संपत्ति के लिए IDataError जानकारी के विरुद्ध जांच करता है। अगर कोई त्रुटि है, तो यह टेम्पलेट को स्वैप करता है। –

+0

धन्यवाद रीड। चीजें स्पष्ट हो रही हैं। मेरे एक्सएएमएल में, मेरे टेक्स्टबॉक्स के लिए। टेक्स्ट, मैं निम्नलिखित डालने के बारे में सोच रहा हूं: <टेक्स्टबॉक्स। अगला> <बाइंडिंग पथ = "टेक्स्ट" अधिसूचनाऑन वैधता त्रुटि = "सही" अपडेटसोर्सट्रिगर = "संपत्ति बदल गया" मान्यताऑनडाटाइरर्स = " यह सच है "ValidatesOnExceptions =" ​​सही "> क्या UpdatesOValidationError के रूप में यहाँ योग्य नहीं रहा? क्या ValidatesOnTargetUpdated = "True" है, पाठ की त्रुटि प्रॉपर्टी को कॉल करें? –

0

आप WPF Application Framework (WAF) की BookLibrary नमूना आवेदन में रुचि हो सकती। यह दिखाता है कि WPF में सत्यापन का उपयोग कैसे करें और सत्यापन त्रुटियों के दौरान सहेजें बटन को कैसे नियंत्रित करें।

0

जैसा कि IDataErrorInfo इंटरफेस डेटा-बाउंड व्यू मॉडेल गुणों के लिए सत्यापन प्रदान करता है। आप कस्टम सत्यापन नियमों को लागू कर सकते हैं या System.ComponentModel.DataAnnotations में उपलब्ध सत्यापन गुणों का उपयोग कर सकते हैं।

मुझे पता चला है कि इस विषय पर कई ट्यूटोरियल अतिरिक्त "फ्लफ" के साथ घिरे हुए हैं और वे अवधारणा को समझने के लिए डब्ल्यूपीएफ के साथ शुरू करने वाले किसी के लिए इसे कठिन बना सकते हैं। मैंने WPF Validation tutorial for the rest of us. Learn to use IDataErrorInfo to automatically validate your views.

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