2011-08-23 2 views

답변

6

PopupRootPresentationFramework-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); 
} 
관련 문제