/// <summary> /// Helper method which determines if any of the elements of /// the tree is focusable and has tab stop /// </summary> public static bool TreeHasFocusAndTabStop(DependencyObject element) { if (element == null) { return(false); } UIElement uielement = element as UIElement; if (uielement != null) { if (uielement.Focusable && KeyboardNavigation.GetIsTabStop(uielement)) { return(true); } } else { ContentElement contentElement = element as ContentElement; if (contentElement != null && contentElement.Focusable && KeyboardNavigation.GetIsTabStop(contentElement)) { return(true); } } int childCount = VisualTreeHelper.GetChildrenCount(element); for (int i = 0; i < childCount; i++) { DependencyObject child = VisualTreeHelper.GetChild(element, i) as DependencyObject; if (TreeHasFocusAndTabStop(child)) { return(true); } } return(false); }