【发布时间】:2013-01-18 23:58:08
【问题描述】:
我对 C# 很陌生,我又迷路了。我不想问这个问题,但我完全不了解它是如何工作的。我正在尝试遍历 WPF 表单上的 TextBoxes 以清除数据。
我所有的文本框都有前缀“TextBox”,它在一串6个字符之前,即(TextBox3N1W09,TextBox3N1W10 ...)。我想我想使用 VisualTreeHelper,但我不够聪明:
#1) 传入一个变量。我想我理解父母,
XAML
在我的例子中,我将网格命名为:“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;
}
【问题讨论】:
-
T是一种泛型类型,使您能够执行List<Double>和List<String>之类的操作。List<T>能够处理您发送的任何有效类型。 -
C.Lang- 感谢您提供有关 'T' 类型的信息,这确实很有意义并且绝对有帮助。
标签: c# wpf controls loops visualtreehelper