2011-08-23 26 views

cevap

6

PopupRoot, PresentationFramework için internal olduğunu. Tür adını GetType().FullName ile karşılaştırabilirsiniz, ancak PopupRoot, gelecekteki çerçeve sürümlerinde değişebilen bir ayrıntıdır ve bu yüzden ona güvenmeyeceğim.

+0

Bütün bunlar ben daha genel bir çözüm gerek bana söyler: Burada

bunu nasıl kullanabileceğinizi bir örnektir. –

2

PopupRoot dahilidir, bu nedenle başvuruda bulunamazsınız. Ancak, LogicalTreeHelper kullanırsanız, varsa Popup'u bulabileceksiniz. Mantıksal bir üst öğe yoksa, LogicalTreeHelper NULL değerini döndürür, bu nedenle VisualTreeHelper ile görsel ağacı yürümeye ek olarak kullanmanız gerekir.

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); 
} 
İlgili konular