2011-08-23 15 views
6

चित्र एक हजार शब्द बता सकते हैं।मैं सिस्टम को कैसे प्राप्त कर सकता हूं। Windows.Controls.Primitive.PopupRoot?

जब मैं दृश्य पेड़ पर चढ़ मैं देख रहा हूँ पिछले माता पिता enter image description here

प्रकार System.Windows.Controls.Pimitives.PopupRoot की है लेकिन मट्ठा मैं वास्तव में उस प्रकार वी.एस. यह शिकायत करने के लिए एक तुलना नहीं है बनाने की कोशिश वैध। ताकि आप उसे अपने विधानसभा से उपयोग नहीं कर सकते

enter image description here

उत्तर

6

PopupRoot, PresentationFramework करने के लिए internal है। आप GetType().FullName के साथ प्रकार के नाम की तुलना कर सकते हैं, लेकिन PopupRoot एक कार्यान्वयन विवरण है जो भविष्य के ढांचे के संस्करणों में बदल सकता है, इसलिए मैं इस पर भरोसा नहीं करता।

+0

सभी जिनमें से मुझसे कहता है मैं एक अधिक सामान्य समाधान की जरूरत है:

यहाँ एक उदाहरण है कि कैसे आप इसका इस्तेमाल कर सकते हैं। –

2

PopupRoot आंतरिक है, इसलिए आप इसका संदर्भ नहीं दे पाएंगे। हालांकि, अगर आप LogicalTreeHelper का उपयोग करते हैं, तो आप मौजूद होने पर Popup ढूंढ पाएंगे। LogicalTreeHelper कोई तार्किक अभिभावक नहीं होने पर NULL लौटाएगा, इसलिए आपको VisualTreeHelper के साथ दृश्य पेड़ चलने के अलावा इसका उपयोग करने की आवश्यकता है।

var popupRootFinder = VisualTreeHelper.GetParent((DependencyObject)your_visual_element); 
while (popupRootFinder != null) 
{ 
    var logicalRoot = LogicalTreeHelper.GetParent(popupRootFinder); 
    if (logicalRoot is Popup) 
    { 
     // popup root found here 
     break; 
    } 

    popupRootFinder = VisualTreeHelper.GetParent(popupRootFinder); 
} 
संबंधित मुद्दे

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