मुझे एकाधिक फ़ील्ड के बीच सत्यापन के साथ समस्या मिली है। उदाहरण के लिए - मुझे RangeDateViewModel नामक एक व्यूमोडेल मिला जिसमें दिनांक दृश्य दृश्य नामक कक्षा के 2 उदाहरण शामिल हैं, उनमें से प्रत्येक क्रमशः प्रारंभ तिथि और समाप्ति तिथि का प्रतिनिधित्व करता है।विभिन्न स्तरों में एकाधिक फ़ील्ड के बीच सत्यापन
तो मेरी इस तरह बाध्यकारी दिखता है -
<TextBox Text="{Binding StartDate.Date, ValidateOnDataError=True}">
<TextBox Text="{Binding EndDate.Date, ValidateOnDataError=True}">
मेरे RangeDateViewModel वर्ग IDataErrorInfo इंटरफ़ेस लागू करता है। मेरी योजना में, RangeDateViewModel को मान्य होता है कि आरंभ तिथि समाप्ति तिथि से पहले, इस तरह IDataErrorInfo [ "PROPERTYNAME"] में समारोह मान्यता तर्क लगाने से है -
public string this[string columnName]
{
get
{
return ValidationError();
}
}
समस्या यह है कि यह कभी है कहा जा रहा है, और इसके बजाय IDataErrorInfo गुण जो प्रत्येक दिनांक दृश्य मॉड्यूल कक्षाओं में रहते हैं, इसके बजाय कहा जा रहा है।
मुझे लगता है कि यह इसलिए है क्योंकि बाध्य संपत्ति RangeDateViewModel के समान स्तर पर नहीं है, बल्कि इसके बजाय बच्चे DateViewModel के अंदर है।
मुझे लगता है कि मेरी ज़रूरत काफी बुनियादी है और इस समस्या के लिए एक आसान समाधान होना चाहिए। मैंने IDataErrorInfo के बजाय प्रमाणीकरण नियमों का उपयोग करने का प्रयास किया लेकिन फिर मैं ValidationRules से वर्तमान सत्यापन स्थिति के बारे में ViewModel को सूचित करने में समस्याएं उत्पन्न करूंगा।
धन्यवाद डैनियल! मैंने कोशिश की कि आपने जो सुझाव दिया था लेकिन स्पष्ट रूप से यह अभी भी पर्याप्त नहीं है। IDataErrorInfo संपत्ति वास्तव में उपयोग की जा रही है लेकिन केवल टेम्पलेट के प्रारंभ में, और बाद में नहीं जब वास्तविक डेटा बदल जाता है। मुझे लगता है कि ऐसा इसलिए है क्योंकि स्टार्टडेट और एंडडेट जटिल वस्तु हैं कि वे स्वयं नहीं बदला जा रहे हैं, लेकिन उनके अंदर गुण हैं, और यह संपत्तिChanged बढ़ाने के लिए पर्याप्त नहीं है। शायद मुझे किसी भी तरह की घटना को उठाना चाहिए जब आंतरिक दिनांक गुण बदलते हैं? – Dror
@ डोर: आप सही हैं। अद्यतन उत्तर में चरण तीन देखें। –
धन्यवाद डैनियल! यह काम करता है हालांकि मेरे पास अभी भी एक आखिरी मामूली समस्या है जिसका सामना कर रहा हूं। इस समाधान के साथ परिणाम मान अमान्य होने पर लाल रंग में चिह्नित दो नियंत्रण होते हैं। मैं चाहता हूं कि उनके बजाय लाल रंग में चिह्नित किया जा रहा है, स्टैपपनेल जो इन दो क्षेत्रों को रखता है, को पढ़ने में चिह्नित किया जाएगा। अधिमानतः इन दो क्षेत्रों को चिह्नित नहीं किया जाएगा, लेकिन यह जरूरी नहीं है। मैंने "हैसइरर्स" नामक रेंजडेट व्यू मॉडेल पर एक बूल प्रॉपर्टी पर डेटा ट्रिगर लगाने का प्रयास किया जो "सत्यापन। हैसरर" को सही पर सेट करेगा, लेकिन दुर्भाग्यवश यह केवल पढ़ने वाली संपत्ति है। मुझे उम्मीद है कि आप इस मुद्दे के साथ भी मेरी मदद कर सकते हैं। – Dror