मान लें कि मेरे पास निम्न निर्भरता ऑब्जेक्ट प्रकार है,
सार्वजनिक वर्ग टेस्ट: निर्भरता ऑब्जेक्ट {सार्वजनिक इंट ऑर्डर {get {return (int) GetValue (OrderProperty); } सेट {सेट वैल्यू (ऑर्डरप्रॉपर्टी, मान); }} सार्वजनिक स्थिर केवल पढ़ने के लिए निर्भरता प्रत्यावर्ती आदेश प्रॉपर्टी = निर्भरता प्रॉपर्टी.नियंत्रण ("ऑर्डरप्रॉपर्टी", टाइपफ (इंट), टाइपफ (टेस्ट), नया फ्रेमवर्कप्रॉपर्टीमैटेटाटा (6, नया प्रॉपर्टी चेंजेड कॉलबैक (ऑनऑर्डर प्रॉपरेटिव चेंग), नए कॉसस वैल्यू कॉलबैक (ओनकोर व्हॉलेकॉलबैक)), नया वैल्यूएडेट वैल्यू कॉलबैक (ऑन वैलिडेट वैल्यूकॉलबैक)) ; स्थिर शून्य ऑनऑर्डर प्रॉपर्टी परिवर्तित (निर्भरता ऑब्जेक्ट डी, निर्भरता प्रॉपर्टी चंगेड ईवेंट एआरग्स e) {कंसोल.प्रकाशलाइन ("ऑनऑरप्रॉपर्टी परिवर्तन"); } स्थिर ऑब्जेक्ट OnCoerceValueCallBack (निर्भरता ऑब्जेक्ट डी, ऑब्जेक्ट बेस वैल्यू) {Console.WriteLine ("OnCoerceValueCallBack"); वापसी 200; } स्थिर bool OnValidateValueCallBack (ऑब्जेक्ट मान) {Console.WriteLine ("OnValidateValueCallBack"); Int iValue = (int) मान; वापसी iValue & gt; 5; }}
जब मैं टेस्ट का एक उदाहरण बनाता हूं, तो मुझे OnValidateValueCallBack
को दो बार और OnCoceValueCallBack
कहते हैं बिल्कुल नहीं कहा जाता है मैं जो देखा, उसके आधार पर, मुझे लगता है कि जब मैं उदाहरण बनाता हूं, तो WPF कॉल कोड को कॉल करने पर OnValidateValueCallBack
जांचता है कि क्या डिफ़ॉल्ट मान वैध है, यदि हां, तो वह डिफ़ॉल्ट मान का उपयोग करेगा और कॉसएवल वैल्यू कॉलबैक
बिल्कुल, तो OnValidateValueCallBack
का दूसरा कॉल कहां से आता है?
मैं इस व्यवहार की पुष्टि कर सकता हूँ एक निर्भरता संपत्ति दर्ज करने पर, मान्य कॉलबैक को WPF के आंतरिक द्वारा कहा जाता है। मेटाडेटा पारित किए बिना, एक कॉल हमेशा होता है मेटाडेटा के साथ एक दूसरा कॉल केवल तब होता है जब
मूल रूप से मैंने सोचा कि पहली कॉल WPF के आंतरिक आरंभीकरण के कारण हुई थी, इसलिए यह हमेशा डिफ़ॉल्ट होगा प्रकार के मूल्य यह मामला नहीं है! पहली कॉल में दिए गए ऑब्जेक्ट या तो प्रकार के डिफ़ॉल्ट मान या मेटाडेटा में निर्दिष्ट डिफ़ॉल्ट मान है दूसरा कॉल अधिक तार्किक लगता है, और बस डिफ़ॉल्ट मान से गुजरता है।
पंजीकरण के लिए कोई जबरदस्ती या बदल कॉलबैक नहीं कहा जाता है।
पहली कॉल का उपयोग एक रहस्य है मुझे।
एमएसडीएन पर।
Comments
Post a Comment