我对C#非常陌生,我又一次迷失了方向,我不想问这个问题,但我无法理解它是如何工作的。我试图在WPF表单上迭代我的TextBoxes以清除数据。
我所有的文本框都有前缀"TextBox“,该前缀位于6个字符的字符串前面,即(TextBox3N1W09,TextBox3N1W10.)。我想我想使用VisualTreeHelper,但我不够聪明:
#1)传入一个变量。我想我理解他的父母,
XAML < Grid Name="ThisGrid“>
在我的例子中,我将网格命名为“ThisGrid”,但我不知道如何传递TextBoxes,我不知道是否需要通过TextBoxes的名称进行迭代,并将它们作为字符串传递,或者是否只需要让VisualTreeHelper查看网格中所有的TextBoxes。
2)一旦传入这些文本框名称或textbox对象,我就不知道如何处理结果:
{ 把孩子送回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;
}发布于 2013-01-19 04:06:54
我试图在WPF表单上迭代我的TextBoxes以清除数据。
这是一种错误的做法。在WPF中,可视化树是一个复杂的事物,在它的导航中也可能是复杂的。相反,你应该改变你的心态:
ItemsControl或其衍生产品之一以及适当的DataTemplate来进行此操作。我建议你也读一下这个概念。底线是,WPF会迅速阻止UI元素的操作,因为Visual和其他事情的复杂性,比如Dispatcher线程亲和力等等。乍一看,这似乎很复杂,但您很快就会意识到,应用正确的模式将大大简化您的生活。
下面是一些你可以开始阅读的文章:
ViewModel
http://msdn.microsoft.com/en-us/library/ms750612.aspx
http://www.wpftutorial.net/
https://stackoverflow.com/questions/14409582
复制相似问题