यहाँ दो अवधारणाओं रहे हैं। "संलग्न गुण" निर्भरता गुण हैं, और इस तरह के समर्थन निर्भरता property value inheritance के रूप में।
बुनियादी निर्भरता गुण के बारे में, एक बहुत ही किसी न किसी तरह बयान किया जाएगा कि वे मूल रूप से WPF (तार्किक/दृश्य) पेड़ में माता पिता के तत्वों से उनके मूल्यों के वारिस। एक निर्भरता संपत्ति (संलग्न या नहीं) इसके मान को "नीचे" मानती है यदि metadataFrameworkPropertyMetadataOptions के साथ सेट है। इनरिट ध्वज, और कई मामलों में ऐसा है।
संलग्न गुण गुण जो किसी भी WPF वस्तु पर सेट किया जा सकता हैं (मूल रूप से, कम से कम एक DependencyObject) DependencyObject.SetValue विधि के माध्यम से। इस तंत्र का उद्देश्य माता-पिता वस्तुओं द्वारा आवश्यक अन्य वस्तुओं की जानकारी को "संलग्न" करना है, न कि बच्चे स्वयं वस्तुओं को। उदाहरण के लिए, Grid.Row ग्रिड द्वारा अपने रेंडर क्षेत्र में आइटम रखने के लिए आवश्यक एक संलग्न संपत्ति है।
निर्भरता गुण WPF वस्तु प्रणाली द्वारा "नीचे की ओर" विरासत में मिला रहे स्वचालित रूप से।
संलग्न गुणों को विशिष्ट वस्तुओं के कोड में स्पष्ट रूप से "ऊपर" की जांच की जाती है। ग्रिड के मामले में, यह निर्धारित करने के लिए कि इसकी वस्तुओं को कहां रखा जाए, यह प्रत्येक निहित आइटम पर ग्रिड.रो और ग्रिड। कॉलम संलग्न गुणों के मूल्य की जांच करता है।
यह अक्सर कस्टम संलग्न गुण बनाने की तकनीक भी है जो किसी भी तरीके से संशोधित वस्तुओं को संशोधित करता है (उदाहरण के लिए, Drag'n'Drop functionality via attached properties)।
एक अतिरिक्त नोट के रूप में, एक विरासत में संलग्न संपत्ति का एक अच्छा उदाहरण TextElement.FontFamily है। ग्रिड.रो और ग्रिड। कॉलम गुणों में इनहेरिट्स फ्लैग सेट नहीं है।
TextElement.FontFamily, परावर्तक से:
FontFamilyProperty = DependencyProperty.RegisterAttached("FontFamily", typeof(FontFamily), typeof(TextElement), new FrameworkPropertyMetadata(SystemFonts.MessageFontFamily, FrameworkPropertyMetadataOptions.Inherits | FrameworkPropertyMetadataOptions.AffectsRender | FrameworkPropertyMetadataOptions.AffectsMeasure), new ValidateValueCallback(TextElement.IsValidFontFamily));
Grid.Row, परावर्तक से:
RowProperty = DependencyProperty.RegisterAttached("Row", typeof(int), typeof(Grid), new FrameworkPropertyMetadata(0, new PropertyChangedCallback(Grid.OnCellAttachedPropertyChanged)), new ValidateValueCallback(Grid.IsIntValueNotNegative));
दिलचस्प और जानकारीपूर्ण। इस परिदृश्य के बारे में क्या, हालांकि: 2x2 ग्रिड (ए) में 2x2 ग्रिड (बी) होता है। ग्रिड बी में एक बटन होता है। यदि ग्रिड बी में यह ग्रिड है।कॉलम संलग्न संपत्ति 1 पर सेट है (इसलिए यह अपने माता-पिता ग्रिड, ग्रिड ए के दूसरे कॉलम में दिखाई देता है), क्या यह नहीं होना चाहिए कि संलग्न संपत्ति ग्रिड बी के बटन पर नीचे की ओर बढ़ जाए, तो बटन ग्रिड बी के दूसरे कॉलम में दिखाई देता है? – Pwninstein
अच्छा सवाल, उत्तर में जानकारी जोड़ा गया। –
बहुत बढ़िया! अब बहुत अधिक समझ में आता है, धन्यवाद !! – Pwninstein