首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >迭代wpf控件

迭代wpf控件
EN

Stack Overflow用户
提问于 2013-01-18 23:58:08
回答 1查看 1.1K关注 0票数 1

我对C#非常陌生,我又一次迷失了方向,我不想问这个问题,但我无法理解它是如何工作的。我试图在WPF表单上迭代我的TextBoxes以清除数据。

我所有的文本框都有前缀"TextBox“,该前缀位于6个字符的字符串前面,即(TextBox3N1W09,TextBox3N1W10.)。我想我想使用VisualTreeHelper,但我不够聪明:

#1)传入一个变量。我想我理解他的父母,

XAML < Grid Name="ThisGrid“>

在我的例子中,我将网格命名为“ThisGrid”,但我不知道如何传递TextBoxes,我不知道是否需要通过TextBoxes的名称进行迭代,并将它们作为字符串传递,或者是否只需要让VisualTreeHelper查看网格中所有的TextBoxes。

2)一旦传入这些文本框名称或textbox对象,我就不知道如何处理结果:

{ 把孩子送回T; }

我完全搞不懂"T“是什么,我该怎么处理"T"?我是需要在方法中做一些事情,还是需要在其中调用方法。就像我在一开始所说的,我只是想清除文本框,这似乎并不困难,但我有一段很长的时间与它。

代码语言:javascript
复制
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;
}
EN

回答 1

Stack Overflow用户

发布于 2013-01-19 04:06:54

我试图在WPF表单上迭代我的TextBoxes以清除数据。

这是一种错误的做法。在WPF中,可视化树是一个复杂的事物,在它的导航中也可能是复杂的。相反,你应该改变你的心态:

  • WPF最适合使用MVVM模式,它鼓励将应用程序逻辑和数据从表示层分离。我建议您研究这种模式,否则您会发现自己一次又一次地试图在WPF中做“看似简单”的事情(比如清除TextBoxes)。
  • 您必须学会将UI视为存储数据的地方,而不是显示数据的一种方式。因此,实际上要清除的字符串不是任何UI元素的属性,而是ModelViewModel的一部分。我建议您在WPF中阅读MVVM和DataBinding。
  • 此外,您将您的TextBoxes TextBox3N1W09、TextBox3N1W10等命名为“Collection of Data Items”(这是MVVM的思维方式),这使我觉得您最好用ItemsControl或其衍生产品之一以及适当的DataTemplate来进行此操作。我建议你也读一下这个概念。

底线是,WPF会迅速阻止UI元素的操作,因为Visual和其他事情的复杂性,比如Dispatcher线程亲和力等等。乍一看,这似乎很复杂,但您很快就会意识到,应用正确的模式将大大简化您的生活。

下面是一些你可以开始阅读的文章:

ViewModel

http://msdn.microsoft.com/en-us/library/ms750612.aspx

http://www.wpftutorial.net/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14409582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档