清除Window中的所有TextBox

时间:2014-04-23 21:16:13

标签: c# wpf wpf-controls controls clear

我在c#(WPF)中编程。我有很多nested controls。我希望我的TextBox控件的clear all在我的应用程序中。通过他们的名字访问它们非常困难。有没有办法访问它们recursively并清除它们?

例如这样的事情:

public void ClearAll(Control c)
{
    if(c is TextBox)
    {
        ((TextBox)c).Clear();
        return;
    }

    foreach(Control child in GetChild(c))
    {
        ClearAll(child);
    }
}

1 个答案:

答案 0 :(得分:2)

VisualTreeHelper类非常方便。您可以像这样使用它:

static public void TraverseVisualTree(Visual myMainWindow)
    {
        int childrenCount = VisualTreeHelper.GetChildrenCount(myMainWindow);
        for (int i = 0; i < childrenCount; i++)
        {
            var visualChild = (Visual)VisualTreeHelper.GetChild(myMainWindow, i);
            if (visualChild is TextBox)
            {
                TextBox tb = (TextBox)visualChild;
                tb.Clear();
            }
            TraverseVisualTree(visualChild);
        }
    }