FindVisualChildren.cs 797 B

1234567891011121314151617181920212223242526272829303132
  1. namespace HistoryView.Universal;
  2. public class FindVisualChildren
  3. {
  4. public static List<T> Find<T>(DependencyObject depObj) where T : DependencyObject
  5. {
  6. List<T> list = [];
  7. if (depObj is null)
  8. return list;
  9. for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
  10. {
  11. DependencyObject child = VisualTreeHelper.GetChild(depObj, i);
  12. if (child is null)
  13. continue;
  14. if (child is T t)
  15. list.Add(t);
  16. List<T> childItems = FindVisualChildren.Find<T>(child);
  17. if (childItems is null || childItems.Count == 0)
  18. continue;
  19. foreach (var item in childItems)
  20. list.Add(item);
  21. }
  22. return list;
  23. }
  24. }