Utils.cs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Windows;
  7. using System.Windows.Media;
  8. namespace PDF_Office.CustomControl
  9. {
  10. internal static class Utils
  11. {
  12. //根据子元素查找父元素
  13. public static T FindVisualParent<T>(DependencyObject obj) where T : class
  14. {
  15. while (obj != null)
  16. {
  17. if (obj is T)
  18. return obj as T;
  19. obj = VisualTreeHelper.GetParent(obj);
  20. }
  21. return null;
  22. }
  23. public static childItem FindVisualChild<childItem>(DependencyObject obj)
  24. where childItem : DependencyObject
  25. {
  26. for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
  27. {
  28. DependencyObject child = VisualTreeHelper.GetChild(obj, i);
  29. if (child != null && child is childItem)
  30. return (childItem)child;
  31. else
  32. {
  33. childItem childOfChild = FindVisualChild<childItem>(child);
  34. if (childOfChild != null)
  35. return childOfChild;
  36. }
  37. }
  38. return null;
  39. }
  40. }
  41. }