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);
}