निर्भरता संपत्ति और स्टाइल ट्रिगर्स के साथ डब्ल्यूपीएफ में सत्यापन का उपयोग करना

मैं डब्ल्यूपीएफ में सत्यापन का उपयोग करने की कोशिश कर रहा हूं। मैंने नीचे दिखाए गए अनुसार NotNullOrEmptyValidationRule बनाया है:

public class NotNullOrEmptyValidationRule : ValidationRule
    {
        public override ValidationResult Validate(object value, CultureInfo cultureInfo)
        {
            if (String.IsNullOrEmpty(value as String))
                return new ValidationResult(false, "Value cannot be null or empty");

            return new ValidationResult(true, null); 
        }
    }

अब, मुझे इसे अपने आवेदन में उपयोग करने की ज़रूरत है। मेरी App.xaml फ़ाइल में मैंने टेक्स्टबॉक्स के लिए शैली घोषित की। घोषणा यहाँ है।

 
        

अब, मैं इसे अपने टेक्स्टबॉक्स पर उपयोग करना चाहता हूं इसलिए मैं निम्नलिखित कोड का उपयोग कर रहा हूं:

  
                
                    
                        
                            
                        
                    
                


            

त्रुटि टैग NotNullOrEmptyValidationRule पर आती है। एक्सएएमएल सिंटैक्स चेकर NotNullOrEmptyValidationRule को हल करने में सक्षम नहीं है। मैंने नेमस्पेस डालने का भी प्रयास किया है लेकिन यह काम नहीं कर रहा है।

0

4 उत्तर

विजुअल स्टूडियो और एक्सप्रेशन ब्लेंड में एक बग है जो इस समस्या का कारण बनती है। आपको क्या करना है यह सुनिश्चित करना है कि प्रमाणीकरण नियम एक अलग परियोजना/असेंबली में है जिसे आप संदर्भित कर सकते हैं। यह समस्या को हल करना चाहिए।

हालांकि, इसे काम करने के लिए आपको नामस्थान वापस जोड़ना होगा।

0
जोड़ा

आपको बस अपनी विंडो में xmlns जोड़ने की आवश्यकता है, और अपने सत्यापन नियम का संदर्भ देने के लिए इसका उपयोग करें।

डब्ल्यूपीएफ में, ऑब्जेक्ट एक ही असेंबली से उपयोग करने के लिए बिल्कुल ठीक है।

चूंकि आपका नियम मानक एक्सएएमएल नेमस्पेस में परिभाषित नहीं है, इसलिए आपको अपने क्लियर नेमस्पेस में मैपिंग बनाना होगा:


और फिर आप इसका उपयोग इस तरह करेंगे:


    
        
    

Edit I added a Path statement to the Binding. You have to tell the Binding what to bind to :)

0
जोड़ा

मुझे लगता है कि टेक्स्टबॉक्स पर आपका बाध्यकारी 'टेक्स्ट' के पथ पर सेट है - क्या यह है कि इस टेक्स्टबॉक्स का डेटाकॉन्टेक्स्ट जो भी है? क्या टेक्स्टबॉक्स वास्तव में इसमें एक मूल्य डाल रहा है? भी, अगर आप अपनी सत्यापन विधि में ब्रेकपॉइंट डालते हैं, तो क्या कभी इसे निकाल दिया जा रहा है?

आप देखना चाहते हैं कि बाइंडिंग में विफलताओं को कैसे लॉग इन करें और उन पर भी समीक्षा करें।

0
जोड़ा

आपके पास इस कोड के पीछे कोड नहीं है

Public Sub New()

    ' This call is required by the Windows Form Designer.
    InitializeComponent()

    Me.**NameOfTextBox**.DataContext = Me
End Sub
0
जोड़ा