Net Core教程

C# WPF 查找窗体上的子元素、得到窗体上的一类元素

本文主要是介绍C# WPF 查找窗体上的子元素、得到窗体上的一类元素,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
 /// <summary>
        /// 查找窗体上的子元素
        /// </summary>
        /// <typeparam name="T">要查找的子元素的类型</typeparam>
        /// <param name="dependencyObject">父级元素</param>
        /// <param name="name">子元素的名称</param>
        /// <returns></returns>
        public static T GetChildElement<T>(DependencyObject dependencyObject, string name) where T : FrameworkElement
        {
            DependencyObject dependencyElement = null;
            T grandChild = null;
            for (int i = 0; i < VisualTreeHelper.GetChildrenCount(dependencyObject)-1; i++)
            {
                dependencyElement = VisualTreeHelper.GetChild(dependencyObject,i);
                if (dependencyElement is T && (((T)dependencyElement).Name == name | string.IsNullOrEmpty(name)))
                {
                    return (T)dependencyElement;
                }
                else
                {
                    // 在下一级中没有找到指定名字的子控件,就再往下一级找
                    grandChild = GetChildElement<T>(grandChild, name);
                    if (grandChild != null)
                        return grandChild;
                }
            }
            return null;
        }
  #region 得到窗体上的某一类型的元素
        /// <summary>
        /// 得到窗体上的某一类型的元素
        /// </summary>
        /// <typeparam name="T">元素类型</typeparam>
        /// <param name="element">要查找的父级元素</param>
        /// <param name="typeName">类类型</param>
        /// <returns></returns>
        public static List<T> GetUIElement<T>(DependencyObject element, Type typeName) where T : FrameworkElement
        {
            DependencyObject child = null;
            List<T> childList = new List<T>();
            List<string> vs = new List<string>();
           
            for (int i = 0; i < VisualTreeHelper.GetChildrenCount(element); i++)
            {
                child = VisualTreeHelper.GetChild(element, i);
                if (child is T && (((T)child).GetType() == typeName))
                {
                    childList.Add((T)child);
                }
                childList.AddRange(GetUIElement<T>(child, typeName));
            }
            return childList;
        }
        #endregion

 

这篇关于C# WPF 查找窗体上的子元素、得到窗体上的一类元素的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!