如何清空WPF Grid的内容?

15

我想清除/删除Grid中包括RowDefinitions在内的所有内容,该怎么做?

2个回答

28

myGrid.Children.Clear()会删除所有嵌套在网格中的子控件。 myGrid.RowDefinitions.Clear()会删除所有行定义。 myGrid.ColumnDefinitions.Clear()会删除所有列定义。

为了完整起见,您还可以通过适当集合的添加/删除方法添加/删除单个项目。对于控件,请使用myGrid.Children;对于行定义,请使用myGrid.RowDefinitions;对于列,请使用myGrid.ColumnDefinitions

所有这些信息都可以在MSDN上找到


清空Children后,行数和列数仍然没有改变吗?已经被成功清空了吗? - Hoy Cheung

-2
尝试循环遍历您的容器控件(例如网格),并在此循环中检查控件的类型,如下所示:
     foreach(DependencyObject c in YourContainer.Children)
        {
            //If you only want to modify TextBoxes
            if(c.GetType().ToString() == "System.Windows.Controls.TextBox")
            {
                //Erase Text property of all TextBoxes in my Grid Control
                ((TextBox)c).Text = "";


            }
        }

1
对于修改来说,这样做是可以的。但是如果您尝试像 OP 最初要求的那样从网格中删除内容,这种方法会导致异常行为,因为您在迭代集合时尝试修改它。此外,根据您的代码,我建议完全替换字符串比较以进行类型检查,例如仅查询 Children 集合中的 TextBoxes,如下所示:foreach(TextBox c in YourContainer.Children.OfType<TextBox>) - ckuepker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接