如何将UserControl中的所有文本框添加到GridView中

2024-04-19

在页面上,我动态地将 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(使用前将#替换为@)

如何将UserControl中的所有文本框添加到GridView中 的相关文章

随机推荐