c# - WPF why isn't error message shown? -
मैं TextBlock
टेक्स्ट को मान्य करना चाहता हूं > टेक्स्टब्लॉक xaml:
& lt; टेक्स्टब्लॉक x: नाम = "numInput" मान्यकरण। त्रुटि-चिह्न = "{stataticResource errorTemplate}" & gt; & LT; TextBlock.Text & gt; & Lt; बाध्यकारी पथ = "पाठ" रिलेटिव सोरस = "{रिलेटिव एसर्स}" अधिसूचनाओनवालिडेटेशनएयर = "ट्रू" & gt; & LT; Binding.ValidationRules & gt; & Lt; स्थानीय: नंबर वैलिडेट / & gt; & LT; /Binding.ValidationRules> & Lt; / बाइंडिंग & gt; & LT; /TextBlock.Text> & Lt; / TextBlock & gt; जीयूआई (यानी टच स्क्रीन) में कुछ बटन क्लिक्स द्वारा कोडबीहिंड में टेक्स्ट जोड़ दिया गया है
errorTemplate
& amp; नियंत्रण; कस्टमरमेट एक्स: कुंजी = "त्रुटिप्रतिमा" & gt; & LT; StackPanel & gt; & Lt; TextBlock अग्रभूमि = "लाल" & gt; त्रुटि msg & lt; / TextBlock & gt; & LT; AdornedElementPlaceholder / & gt; & Lt; / StackPanel & gt; & Lt; / ControlTemplate & gt; NumberValidator
<पूर्व> वर्ग नंबर वैॅलिडेट: मान्यकरण नियम {सार्वजनिक ओवरराइड मान्यकरणउद्दिष्ट प्रमाणित (ऑब्जेक्ट मान, सिस्टम। ग्लोबलाइज़ेशन.कल्चरइन्फो कल्चरइन्फो) { कंसोल.प्रकाश रेखा ("मान्य संख्याएं !!"); Int num = -1; कोशिश {num = int32.Parse (value.ToString ()); } पकड़ (अपवाद ई) {नया सत्यापन रिटर्न वापसी (गलत, "इनपुट नंबर होना चाहिए!"); } यदि (num & gt; 999 || num & lt; 1) {नया सत्यापन रिटर्न वापसी (गलत, string.Format ("{0} से {1} तक पूर्णांक होना चाहिए", 1, 99 9)); } नए मान्यकरण रिटर्न वापसी (सच, रिक्त); }} प्रश्न:
-
कोई त्रुटि संदेश नहीं दिखाया गया है। वास्तव में,
नंबर वैॅलिडेटाको भी नहीं कहा जाता है क्यों? -
जब कोई
बटनक्लिक किया जाता है तो त्रुटि को कैसे मान्य किया जाए? -
कैसे
numberValidator
धन्यवाद
मुझे लगता है कि आप स्रोत-टू-लक्ष्य दिशा में सत्यापन प्रदर्शन करना चाहते हैं (मॉडल त्रुटियों के लिए विज़ुअल फीडबैक प्रदान करें), इसलिए मेरा उत्तर केवल तभी लागू होता है यदि यह है
-
मान्यकरण के नियम केवल डिजाइन से लक्षित-टू-सोर्स दिशा में हैं (मुख्य विचार यहां उपयोगकर्ता इनपुट मान्य करना है), इसलिए जब आप मॉडल, सत्यापन नियमों की जांच नहीं की जाती। स्रोत-टू-लक्ष्य दिशा में सत्यापन करने के लिए, आपके मॉडल को या तो
IDataErrorInfoयाINotifyDataErrorInfo(बाद में केवल .NET 4.5 या नए में समर्थित किया जा रहा है) को लागू करना चाहिए, औरValidatesOnDataErrorsको बाइंडिंग परtrueपर सेट किया जाना चाहिए। -
सत्यापन तब होता है जब बाइंडिंग अपडेट हो जाता है, इसलिए बटन मॉडल पर संपत्ति (या, अधिक विशेष रूप से, उठता है
PropertyChangedघटना) को क्लिक करें, सत्यापन को निष्पादित किया जाएगा। ध्यान दें कि यदि किसी अन्य अवसर पर संपत्ति बदल जाती है, तो सत्यापन भी किया जाएगा, ताकि केवल बटन पर क्लिक करने के लिए सत्यापन सुनिश्चित करें कि गुण बदल गया है (याPropertyChangedउठाया जाता है) केवल तभी । -
मानकी गई परिदृश्य में
validationRuleडेरिवेटिव उपयुक्त दृष्टिकोण का उपयोग करने के बावजूद उत्तर कोअधिकतमऔरनंबर वैलिडेटिकवर्ग पर न्यूनतम गुण, और उसके बाद एक्सएएमएल में उनका उपयोग करें:& lt; local: NumberValidator न्यूनतम = "0" अधिकतम = "100" / & gt; < / कोड>।
बाइंडिंग के बारे में अधिक जानकारी के लिए देखें।
Comments
Post a Comment