Beispiel #1
0
        public static T?FindFirstChild <T>(this UIElement view, Func <T, bool>?selector, int?childLevelLimit = null, bool includeCurrent = true)
            where T : UIElement
        {
            Func <UIElement, bool> childSelector;

            if (selector == null)
            {
                childSelector = child => child is T;
            }
            else
            {
                childSelector = child => child is T t && selector(t);
            }

            if (includeCurrent && childSelector(view))
            {
                return(view as T);
            }

            var maxDepth = childLevelLimit ?? int.MaxValue;

            return((T)view.EnumerateAllChildren(childSelector, maxDepth).FirstOrDefault());
        }