WPF - 如何查找另一个对象中包含的对象?

时间:2011-02-01 20:34:29

标签: wpf wpf-controls

我在窗口中有一个TabControl,控件中有几个标签项。我将如何查找其中一个标签项中包含的所有TextBox控件?

感谢。

3 个答案:

答案 0 :(得分:2)

您应该阅读this

答案 1 :(得分:1)

这样的事情:

public static IEnumerable<T> FindDescendants<T>(DependencyObject obj, Predicate<T> condition) where T : DependencyObject
{
    List<T> result = new List<T>();

    for (var i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
    {
        var child = VisualTreeHelper.GetChild(obj, i);

        var candidate = child as T;
        if (candidate != null)
        {
            if (condition(candidate))
            {
                result.Add(candidate);
            }
        }

        foreach (var desc in FindDescendants(child, condition))
        {
            result.Add(desc);
        }
    }

    return result;
}

如果在选项卡项中找到所有文本框,方法调用将如下所示:

var allTextBoxes = FindDescendants<TextBox>(myTabItem, e => true);

答案 2 :(得分:0)

您可以使用this code并将其更改为匹配类型而非名称。