public static DependencyObject FindAncestorByType(DependencyObject element, Type type, bool specificTypeOnly)
        {
            if (element == null)
            {
                return(null);
            }

            if (specificTypeOnly ? (element.GetType() == type)
                                : (element.GetType() == type) || (element.GetType().IsSubclassOf(type)))
            {
                return(element);
            }

            return(VisualTreeHelperEx.FindAncestorByType(VisualTreeHelper.GetParent(element), type, specificTypeOnly));
        }
        public static T FindAncestorByType <T>(DependencyObject depObj) where T : DependencyObject
        {
            if (depObj == null)
            {
                return(default(T));
            }
            if (depObj is T)
            {
                return((T)depObj);
            }

            T parent = default(T);

            parent = VisualTreeHelperEx.FindAncestorByType <T>(VisualTreeHelper.GetParent(depObj));

            return(parent);
        }