2009-09-24 15 views
9

प्राप्त करें, इसलिए मेरे पास यह UserControl है जो किसी अन्य उपयोगकर्ता नियंत्रण के अंदर है। चलिए उन्हें पेरेंटयूसी और चाइल्डयूसी कहते हैं। मुझे चाइल्डयूसी से पेरेंटयूसी प्राप्त करने की आवश्यकता है।डब्ल्यूपीएफ उपयोगकर्ता नियंत्रण मालिक

मुझे पता है कि विंडो मालिक Window.GetWindow(userControl) होगा, लेकिन UserControl में इस AFAIK की तरह कोई विधि नहीं है।

सहायता के लिए धन्यवाद!

उत्तर

14

मैं इस समाधान के साथ आया, लेकिन अगर आपके पास बेहतर है तो पोस्ट करें। धन्यवाद!

DependencyObject ucParent = this.Parent; 

while (!(ucParent is UserControl)) 
{ 
    ucParent = LogicalTreeHelper.GetParent(ucParent); 
} 
0

तुम हमेशा VisualTreeHelper.GetParent(child) उपयोग कर सकते हैं माता पिता दृश्य ट्री में (एक नेस्टेड उपयोगकर्ता नियंत्रण से माता-पिता उपयोगकर्ता नियंत्रण) वापस जाने के लिए।

+0

मैंने वह किया, लेकिन यह ग्रिड कि नियंत्रण शामिल हो जाता है, यही कारण है मैं पाश करना पड़ा जब तक यह तार्किक पेड़ में पहली UserControl जाता है। और मुझे लगता है कि लॉजिकल ट्रीहेल्पर का उपयोग करना बेहतर है, इसलिए लूप टेम्पलेट्स, एडॉर्नर्स इत्यादि में नहीं मिलता है। सुझाव के लिए धन्यवाद। – Carlo

0

उपयोगकर्ता नियंत्रण में एक मूल संपत्ति है जो आपको इसके माता-पिता तक पहुंच प्रदान करनी चाहिए।

फिर आप इसे अपने ParentUC ऑब्जेक्ट पर डाल सकते हैं।

+0

हाँ, समस्या यह है कि UserControl एक StackPanel के अंदर हो सकता है, कि एक ग्रिड के अंदर है, कि माता-पिता UserControl के अंदर है, जो मामले myUserControl.Parent में एक StackPanel, myUserControl.Parent.Parent एक होगा किया जाएगा ग्रिड, और अंत में myUserControl.Parent.Parent.Parent (निश्चित रूप से यह माता-पिता को StackPanel या ग्रिड को कास्ट नहीं करके सरलीकृत किया गया है) UserControl होगा। यही कारण है कि मैं बच्चे के शीर्ष पर पाया गया पहला UserControl प्राप्त करने के लिए लूप का उपयोग करता हूं। – Carlo

+0

हाहा, मैंने आपके द्वारा पोस्ट किए गए समाधान को देखा (यह महसूस नहीं किया कि आपने सवाल भी पूछा था) और चूंकि यह सवाल यह इंगित करने के लिए आया कि बालूसी माता-पिता का प्रत्यक्ष बच्चा था, मैं एक और सरल प्रदान करना चाहता था जवाब। आपके परिदृश्य में अतिरिक्त जानकारी को देखते हुए, मुझे लगता है कि जिस समाधान के साथ आप आए थे वह वह है जो आपको करने की ज़रूरत है। – Scott

+0

हाँ ऐसा लगता है। कहीं मैंने पढ़ा है कि विंडो क्या है। गेटविंडो (UIElement) करता है, तो मुझे लगता है कि यह सबसे अच्छा शर्त है। फिर भी सुझाव के लिए धन्यवाद! – Carlo

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