WPF + Controls.UserControl。如何在里面找到一个控件?

时间:2011-07-01 08:36:21

标签: c# wpf user-controls

在我的WPF项目中,我有一个System.Windows.Controls.UserControl控件。如何在那个控制器中找到一个控件?

2 个答案:

答案 0 :(得分:1)

如果我理解你的问题,请使用VisualTree。

参考msdn:http://msdn.microsoft.com/en-us/library/dd409789.aspx

答案 1 :(得分:1)

在这种情况下,你可能想要走可视树,就像这个扩展方法那样:

internal static T FindVisualChild<T>(this DependencyObject parent) where T : DependencyObject
{
    if (parent == null)
    {
        return null;
    }

    DependencyObject parentObject = parent;
    int childCount = VisualTreeHelper.GetChildrenCount(parent);
    for (int i = 0; i < childCount; i++)
    {
        DependencyObject childObject = VisualTreeHelper.GetChild(parentObject, i);
        if (childObject == null)
        {
            continue;
        }

        var child = childObject as T;
        return child ?? FindVisualChild<T>(childObject);
    }

    return null;
}

它要求您知道要查找的控件的类型。