2012-12-14 18 views
8

ऑब्जेक्ट लाइफसाइकिल के किस समय बाइंडिंग पहली बार हल हो रही है?डेटा बाइंडिंग कब लागू होते हैं?

यह एक साधारण सवाल है लेकिन मुझे किताबों में और न ही Google के माध्यम से कोई जानकारी नहीं मिल रही है।

उत्तर

7

यह वास्तव में इतना आसान नहीं है, आपको इस प्रश्न का सीधा जवाब नहीं मिलेगा। ये संदर्भ पर निर्भर करता है।

यहाँ दो सरल उदाहरण हैं:

घिरे संपत्ति एक WPF नियंत्रण है कि एक ControlTemplate अंदर नहीं है के स्वामित्व में है, तो बंधन सबसे अधिक संभावना है पहली बार जब UpdateLayout विधि के लिए कहा जाता है के लिए समाधान हो जाएगा पहली बार, यदि DataContext पहले से सेट है। DataContext सेट नहीं था, तो इसके पश्चात नियंत्रण भरी हुई है हल किया जा करने की कोशिश करेंगे: नीचे

private void RequestRun() 
{ 
    base.Dispatcher.BeginInvoke(DispatcherPriority.DataBind, new DispatcherOperationCallback(this.Run), false); 
    base.Dispatcher.BeginInvoke(DispatcherPriority.Loaded, new DispatcherOperationCallback(this.Run), true); 
} 

देख DataBindEngine.RequestRun() घिरे संपत्ति एक WPF नियंत्रण एक ControlTemplate के अंदर है कि के स्वामित्व में है, तो हालांकि, इसे पहली लेआउटिंग पास के दौरान पहली बार हल किया जाएगा जो ApplyTemplate को ट्रिगर करेगा और बाध्यकारी को हल करने का नेतृत्व करेगा।

ये केवल विशिष्ट उदाहरण हैं, यदि आप बाध्यकारी तंत्र को पूरी तरह से समझना चाहते हैं, तो आपको MS.Internal.Data.DataBindEngine और System.Windows.Data.BindindExpression कक्षाओं को देखने के लिए परावर्तक का उपयोग करना चाहिए। वे निर्भरता गुणों पर बाइंडिंग का उपयोग करते समय सही डेटा को धक्का देने के लिए जिम्मेदार वर्ग हैं।

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