मेरे सवाल का FindAncestor और AncestorLevel का उपयोग के बारे में ठीक से एक से दूसरे तत्व की संपत्ति बाध्यकारी है।बाध्यकारी ग्रिड ऊंचाई एक और ग्रिड
यहाँ मेरी कोड की संरचना है:
डाटा खाका एक ग्रिड (चलो ग्रिड
GridA
कहा जाता है) शामिल है, और ग्रिड में, मैं एक नियंत्रण का एक उदाहरण निर्दिष्ट करते हैं,ControlA
कहा जाता है।ControlA
UserControl
है जिसमेंGrid
है।ControlA
(कोड-बैक) में कस्टम तर्क है जो गतिशील रूप से सामग्री बनाता है - लेकिन संक्षेप में, यह एक और डेटा टेम्पलेट का उपयोग करता है।ControlA
के लिए डेटा टेम्पलेट मेंGrid
शामिल हैं। मैं ऊपर मेरी पहली बुलेट बिंदु में संदर्भित डेटा टेम्पलेट मेंGrid
कीHeight
संपत्ति (ग्रिडGridA
कहा जाता है) के लिए इस डेटा टेम्पलेट में इस ग्रिड के लिएHeight
संपत्ति बाध्य करने के लिए चाहते हैं।
यहाँ XAML कि मैं बंधन के लिए इस्तेमाल किया है है, लेकिन अनिवार्य रूप से, यह काम कर रहा is not, के रूप में अपनी ग्रिड नहीं मिल रहा:
<Grid Height="{Binding Path=ActualHeight,
RelativeSource={RelativeSource FindAncestor,
AncestorType=Grid,
AncestorLevel=2},
UpdateSourceTrigger=PropertyChanged}">
</Grid>
मैं समझता हूँ कि निर्दिष्ट करने AncestorLevel=2
द्वारा, यह है कि जिस प्रकार की आप खोज रहे हैं उसकी दूसरी "मिली" घटना का उपयोग करेंगे, इस मामले में, प्रकार Grid
है। तो मेरे मन में, यह पहली ControlA
में Grid
मिलेगा, तो यह पहली डेटा टेम्पलेट, जो Grid
नामित GridA
है में Grid
पेड़ पर चलना और पता लगाने के लिए जारी रहेगा। यह दूसरी घटना होनी चाहिए, सही?
प्रतिक्रिया के लिए धन्यवाद। मैं डिजाइन के बारे में टिप्पणियों पर आपसे सहमत हूं - यह मेरी पसंद नहीं थी और इस परियोजना के अतिरिक्त होने से पहले किया गया था। अपने सुझाव के बारे में, यह तीसरी ग्रिड है कि पहले ग्रिड के लिए बाध्य होगा। तो, तीसरे ग्रिड के लिए आपका उदाहरण AncestorLevel = 2 निर्दिष्ट करता है, जो मैंने अपने उदाहरण में कहा है। तो, मैं उलझन में हूँ। अगर हम दोनों पूर्वज पूर्ववत = 2 निर्दिष्ट कर रहे हैं, तो मैं गलत तरीके से क्या कर रहा हूं? – Chris
मेरे पास तीन ग्रिड हैं, जबकि आप कहते हैं कि आपके पास दो हैं। लेकिन शायद मैंने आपके प्रश्न को गलत समझा। क्या यह काम करता है यदि आप अपने पूर्वजों के स्तर को 1 में बदलते हैं? –