关于WPF中获取控件所在的Window对象的问题,可以使用以下方法:
public static T FindVisualParent<T>(DependencyObject obj) where T : DependencyObject
{
DependencyObject parent = VisualTreeHelper.GetParent(obj);
while (parent != null && !(parent is T))
{
parent = VisualTreeHelper.GetParent(parent);
}
return parent as T;
}
调用方法:
Window window = FindVisualParent<Window>(control);
public static T FindLogicalParent<T>(DependencyObject obj) where T : DependencyObject
{
DependencyObject parent = LogicalTreeHelper.GetParent(obj);
while (parent != null && !(parent is T))
{
parent = LogicalTreeHelper.GetParent(parent);
}
return parent as T;
}
调用方法:
Window window = FindLogicalParent<Window>(control);
这两种方法都可以获取控件所在的Window对象。VisualTreeHelper主要用于获取视觉元素的父子关系,而LogicalTreeHelper主要用于获取逻辑元素的父子关系。在大多数情况下,它们可以互换使用。
领取专属 10元无门槛券
手把手带您无忧上云