您现在的位置是:首页 > 文章详情

【C#】wpf查找父子节点

日期:2018-05-25点击:352
原文: 【C#】wpf查找父子节点

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Media; namespace TestSeagate.Common { class UIAssociate { /// <summary> /// 查找第一个父节点是T类型的节点,并返回。 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="dobj"></param> /// <returns></returns> public static T GetAncestor<T>(DependencyObject dobj) where T : FrameworkElement { DependencyObject parent = VisualTreeHelper.GetParent(dobj);//可视树 深入内部 while (!(parent is T) && parent != null) { parent = VisualTreeHelper.GetParent(parent); } if (parent != null) { return (T)parent; } else { return null; } } /// <summary> /// 查找所有满足条件的子节点, /// </summary> /// <typeparam name="T"></typeparam> /// <param name="depen"></param> /// <param name="childname"></param> /// <returns></returns> public static List<T> GetChildren<T>(DependencyObject depen,string childname=null) where T:FrameworkElement { DependencyObject child = null; List<T> lists = new List<T>(); for(int i=0;i<VisualTreeHelper.GetChildrenCount(depen);i++) { child = VisualTreeHelper.GetChild(depen,i); if((child is T)&&(((T)child).Name==childname||string.IsNullOrEmpty(childname))) { lists.Add((T)child); } lists.AddRange(GetChildren<T>(child, childname)); } return lists; } } } 

原文链接:https://yq.aliyun.com/articles/678510
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章