FocusManager.GetFocusedElement идентифицирует сфокусированный элемент.Затем вы можете пройти по дереву визуалов с помощью VisualTreeHelper.GetParent , чтобы увидеть, является ли он дочерним элементом элемента управления, который вас интересует. Прогулка будет намного легче, чем проверка всего дерева дочерним узлом-узел.
Что-то вроде:
bool IsKeyboardFocusWithin(UIElement element)
{
UIElement focused = FocusManager.GetFocusedElement() as UIElement;
while (focused != null)
{
if (focused == element)
{
return true;
}
focused = VisualTreeHelper.GetParent(focused) as UIElement;
}
return false;
}