测试控件是否在GroupBox中

本文关键字:GroupBox 是否 控件 测试 | 更新日期: 2023-09-27 18:28:23

我正试图弄清楚如何编写包含if语句的代码(特别是事件处理程序),无论发送方是否包含在GroupBox中。

例如,假设我有两个GroupBox,每个GroupBox都包含一个网格,然后该网格包含一个文本框。我想为"TextUpdated"编写一个单独的事件处理程序,它可以区分事件来自哪个组框(尽管这对于两个TextBox来说可能听起来过于复杂,但我正在处理的情况是,每个组框中都有许多控件,但事件处理程序是相同的)。

有没有办法让发件人。在(GroupBoxOne)中是否包含布尔?因为我在每个分组框中都有一个网格,所以使用groupbox.PParent(xyz)似乎不起作用,因为它会将网格作为父对象。

希望这是有意义的。。。非常感谢。

测试控件是否在GroupBox中

您可以使用VisualTreeHelper.GetParent遍历可视化树。

这里有一个很好的实现方法。

代码:

// walk up the visual tree to find object of type T, starting from initial object
public static T FindUpVisualTree<T>(DependencyObject initial) where T : DependencyObject
{
    DependencyObject current = initial;
    while (current != null && current.GetType() != typeof(T))
    {
         current = VisualTreeHelper.GetParent(current);
    }
    return current as T;   
}

用法:

Grid gridContainingButton = FindUpVisualTree<Grid>(button01);