/// <summary> /// 深层递归遍历,查找特定类型的子对象集合 /// </summary> public static List <T> GetChildObjects <T>(DependencyObject objReference) where T : FrameworkElement { List <T> listChilds = new List <T>(); do { if (null == objReference) { break; } int iChildrenCount = VisualTreeHelper.GetChildrenCount(objReference); if (0 >= iChildrenCount) { break; } for (int i = 0; i < iChildrenCount; ++i) { DependencyObject objChild = VisualTreeHelper.GetChild(objReference, i); if (objChild is T) { listChilds.Add((T)objChild); } List <T> listGrandChilds = VisualTreeHelperEx.GetChildObjects <T>(objChild); if (null != listGrandChilds && listGrandChilds.Count > 0) { listChilds.AddRange(listGrandChilds); } } }while (false); return(listChilds); }