在页面上,我动态地将 UserControl 添加到 GridView 中。因此,每个 UserControl 可以包含不同类型的控件( TextBox、CheckBox、Radio Button)
比如说,UserControl 的名称是:UserForm。
问题 :
如何使用 VisualTreeHelper 获取控件集合并检查 textBox 是否为空。
我找到了与此问题类似的代码并对其进行了修改,但不起作用。
我不知道这意味着什么以及是否需要这样做?
list.AddRange(AllTextBoxes(子))
我应该使用 MyList.Select() 还是 MyList.Where() ?
void FindTextBoxes()
{
List <TextBox> MyList = AllTextBoxes(UserForm);
var count = MyList.Where(x= > if(string.IsEmptyOrNull(x.Text));
}
List <TextBox> AllTextBoxes(DependencyObject parent)
{
var list = new List <TextBox>();
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(parent); i++)
{
var child = VisualTreeHelper.GetChild(parent, i);
if (child is TextBox)
list.Add(child as TextBox);
list.AddRange(AllTextBoxes(child));
}
return list;
}
这是我用的。
void MainPage_Loaded(object sender, RoutedEventArgs e)
{
var textBoxes = AllChildren(MyGridView).Where(x => x is TextBox);
}
public IEnumerable<Control> AllChildren(DependencyObject parent)
{
for (int index = 0; index < VisualTreeHelper.GetChildrenCount(parent); index++)
{
var child = VisualTreeHelper.GetChild(parent, index);
if (child is Control)
yield return child as Control;
foreach (var item in AllChildren(child))
yield return item;
}
}
祝你好运!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)