12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- using System.Windows;
- using System.Windows.Media;
- namespace System.Windows.Forms
- {
- public static class WpfHelper
- {
- public static T FindAncestor<T>(DependencyObject obj) where T : class
- {
- var parent = VisualTreeHelper.GetParent(obj);
- if (parent == null)
- return null;
- if (parent is T)
- return parent as T;
- return FindAncestor<T>(parent);
- }
- public static T FindParent<T>(FrameworkElement obj) where T : class
- {
- var parent = obj.Parent as FrameworkElement;
- if (parent == null)
- return null;
- if (parent is T)
- return parent as T;
- return FindParent<T>(parent);
- }
- public static T GetChildOfType<T>(this DependencyObject depObj) where T : DependencyObject
- {
- if (depObj == null)
- return null;
- for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
- {
- var child = VisualTreeHelper.GetChild(depObj, i);
- var result = (child as T) ?? GetChildOfType<T>(child);
- if (result != null)
- return result;
- }
- return null;
- }
- public static Rect BoundsRelativeTo(this FrameworkElement child, Visual parent)
- {
- var gt = child.TransformToAncestor(parent);
- return gt.TransformBounds(new Rect(0, 0, child.ActualWidth, child.ActualHeight));
- }
- }
- }
|