사진은 천 단어를 말할 수 있습니다. 나는 시각적 트리를 올라갈 때System.Windows.Controls.Primitive.PopupRoot 형식을 가져 오는 방법은 무엇입니까?
나는 마지막 부모가 형 System.Windows.Controls.Pimitives.PopupRoot의
입니다 참조하지만 유장 나는 VS 그것을 불평 해당 유형에 대한 비교가 아니라 실제로 만들려고 유효한. 당신이 어셈블리에서 액세스 할 수 있도록
사진은 천 단어를 말할 수 있습니다. 나는 시각적 트리를 올라갈 때System.Windows.Controls.Primitive.PopupRoot 형식을 가져 오는 방법은 무엇입니까?
나는 마지막 부모가 형 System.Windows.Controls.Pimitives.PopupRoot의
입니다 참조하지만 유장 나는 VS 그것을 불평 해당 유형에 대한 비교가 아니라 실제로 만들려고 유효한. 당신이 어셈블리에서 액세스 할 수 있도록
PopupRoot
는 PresentationFramework
-internal
입니다. 형식 이름을 GetType().FullName
과 비교할 수 있지만 PopupRoot
은 향후 프레임 워크 버전에서 변경할 수있는 구현 세부 사항이므로 의존하지 않을 것입니다.
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);
}
모두 내가 더 일반적인 솔루션을 필요로 나에게 말한다 : 여기
당신이 그것을 사용하는 방법을 예입니다. –