我在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);
}
}
答案 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);
}
}