2011-02-15 20 views
7

ठीक है, मुझे पता है कि FrameworkElement, जो UIElement का एक सीधा उपवर्ग, एक जनक संपत्ति है, लेकिन पैनलों प्रकार UIElement के बच्चे हैं, नहीं FrameworkElement जो लगता है (बच्चे प्रकार UIElementCollection की है) इसका मतलब होगा कि आप UIElement रों सीधे जोड़ सकते हैं एक पैनल के लिए।आप UIElement के अभिभावक को कैसे प्राप्त कर सकते हैं?

यह कहा गया है कि, यदि आपके पास UIElement है और यह देखना चाहते हैं कि उसके पास एक पैनल है या नहीं, तो मुझे यह पता होना चाहिए कि इसका परीक्षण कैसे किया जाए VisualTreeHelper के साथ, लेकिन यह दृश्य वृक्ष है, तार्किक पेड़ नहीं। (कम से कम हम जानते हैं कि एक पैनल में कोई टेम्पलेट नहीं है, तो शायद यह तरीका है, लेकिन फिर भी ...)

तो VisualTreeHelper से Asides, क्या कोई यह जानता है कि कौन सा पैनल UIElement का अभिभावक है? (... और क्या कोई विचार है कि उन्होंने FrameworkElement पर बजाय एक मूल संपत्ति को परिभाषित क्यों नहीं किया?)

धन्यवाद!

उत्तर

6

ठीक है, अगर आपको लॉजिकल पेरेंट ढूंढने की ज़रूरत है तो आप का उपयोग VisualTreeHelper जैसे ही कर सकते हैं।

"... और कोई विचार है कि उन्होंने FrameworkElement पर बजाय केवल एक मूल संपत्ति को परिभाषित क्यों नहीं किया?"। असल में, "लॉजिकल ट्री" की धारणा FrameworkElement स्तर पर पेश की गई है। FrameworkElementUIElement में क्या जोड़ता है, इसके विवरण के लिए http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.aspx देखें (टिप्पणियां देखें)। यहां बताया गया है कि यह तार्किक पेड़ के बारे में कहते हैं:

तार्किक पेड़: सामान्य WPF प्रोग्रामिंग मॉडल अक्सर तत्वों का एक पेड़ जा रहा है के संदर्भ में व्यक्त की है। तत्वों के पेड़ को तार्किक पेड़ के रूप में व्यक्त करने के लिए समर्थन, और मार्कअप में पेड़ को परिभाषित करने के लिए समर्थन के साथ फ्रेमवर्क एलिमेंट स्तर पर लागू किया गया है। नोट हालांकि कि फ्रेमवर्क एलिमेंट जानबूझकर सामग्री मॉडल को परिभाषित नहीं करता है, और कक्षाओं को प्राप्त करने की ज़िम्मेदारी छोड़ देता है। अधिक जानकारी के लिए, Trees in WPF देखें।

+0

मुझे अंतर पता है। भौतिक पेड़ और तार्किक पेड़ के बीच। मैंने यही नहीं पूछा। न ही मैं यहां लॉजिकल ट्रीहेल्पर का उपयोग कर सकता हूं क्योंकि कैनवास बहुत अच्छी तरह से विजुअल ट्री का हिस्सा हो सकता है। हालांकि मैं माता-पिता के बारे में आपका मुद्दा देखता हूं। मेरा तर्क है कि क्यों अलग दृश्यदर्शी भी नहीं बनायेगा? मान लीजिए कि यह नीचे आता है कि मेरे पास पैरेंट पैनल प्राप्त करने के लिए VisualTreeHelper (और सुविधा के लिए एक संलग्न विधि) का उपयोग करने के अलावा कोई विकल्प नहीं है। और तकनीकी रूप से यह जवाब नहीं है, फिर भी मैं इसे इस तरह चिह्नित कर रहा हूं क्योंकि ऐसा लगता है कि कोई ऐसा नहीं है। – MarqueIV

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