public static T GetFirstChildOf <T> (this DependencyObject start, eTraversalTree tree = eTraversalTree.Visual) where T : DependencyObject { var childSelector = ChildSelectorForTree(tree); return(TreeTraversal <DependencyObject> .GetFirstChildOfType <T>(start, getChildrenMethodOverride : _ => childSelector(_))); }