我对 C# 很陌生,我又迷路了。我讨厌问这个问题,但我对理解它是如何工作的非常迷茫。我正在尝试遍历 WPF 表单上的 TextBoxes 以清除数据。
我所有的文本框都有前缀“TextBox”,它在一串6个字符之前,即(TextBox3N1W09,TextBox3N1W10 ...)。我想我想使用 VisualTreeHelper,但我不够聪明:
#1)传入一个变量。我想我了解父级,
XAML < 网格名称="ThisGrid" >
在我的情况下,我将网格命名为:“ThisGrid”,但我不明白如何传入文本框,我不知道是否需要通过文本框的名称进行迭代并将它们作为字符串传递,或者我是否需要可以简单地让 VisualTreeHelper 查看网格中的所有文本框。
#2)一旦传入这些文本框名称或文本框对象,我不确定如何处理结果:
{
将孩子返回为 T;
}
我完全不知道“T”是什么,我该怎么处理“T”?我需要在方法中做某事还是从我调用该方法的地方做某事。就像我一开始说的,我只想清除文本框,这似乎并不难,但我玩得很开心。
public static T FindVisualChildByName<T>(DependencyObject parent, string name) where T : DependencyObject
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(parent); i++)
{
var child = VisualTreeHelper.GetChild(parent, i);
string controlName = child.GetValue(Control.NameProperty) as string;
if (controlName == name)
{
return child as T;
}
else
{
T result = FindVisualChildByName<T>(child, name);
if (result != null)
return result;
}
}
return null;
}