C# 在 WPF 中使用文本框、按钮等填充动态网格
- VS2010-C# 我有一个文本框,您可以在其中输入整数,然后使用整数个 UniformGrid 单元动态生成 UniformGrid。现在,如果我想向每个 UniformGrid 单元格添加一个 TextBox,我会执行以下操作(例如 int 是 5):
TextBox[] tb = new TextBox[5];
for (int i = 0; i < 5; i++)
{
tb[i] = new Textbox();
UniformGrid1.Children.Add(tb[i]);
}
好的..效果很好。但当我还需要在其中填充更多文本框、按钮和标签并定义一些设计属性时,问题就来了,可能还需要在 UniformGrid 单元格中插入网格。如果我为每个控件创建数组并在循环中定义每个数组属性,它会变得非常混乱。 不仅它很混乱,我还无法将文本框放在 UniformGrid 的单元格的网格内。孩子们将网格添加到文本框的顶部。
有更好的方法来解决这个问题吗?
- VS2010 -C#
I have a TextBox where you can input an integer and a UniformGrid is dynamically generated with the integer number of UniformGrid Cells. Now if I want to add a TextBox to each UniformGrid Cell, I do the following (e.g. int is a 5):
TextBox[] tb = new TextBox[5];
for (int i = 0; i < 5; i++)
{
tb[i] = new Textbox();
UniformGrid1.Children.Add(tb[i]);
}
Ok..that works fine. But problem comes when I need also to fill in some more Texboxes, Buttons, and Labels in it with some design properties defined, possibly also insert a grid inside a UniformGrid Cell. It will get extremely messy if I create arrays for each control and define each array properties in the loop.
Not only that it's messy, I cannot put the textbox inside the UniformGrid's Cell's Grid. The children add the grid on top of the TextBox instead.
Is there a better way to approach this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您应该使用数据绑定。
使 ItemsControl 将其绑定到 ObservableCollection 并使用 UniformGrid 作为 ItemsControl 的容器。
You should use DataBinding instead.
Make a ItemsControl bind it to ObservableCollection and use UniformGrid as a container to ItemsControl.
我认为使用像 DataGrid 这样的专门控件会更好,因为它会自动创建模型的双向绑定,易于维护等。有很多示例,例如 此处(如果您询问“wpf datagrid 示例教程”等内容,Google 可以帮助您找到更多信息)
I think that using specialized controls like DataGrid would be better, beacuse it automatically creates two-way bindings to model, it's easy to maintain, etc. There are lots of examples, for example here (Google can help you to find more, if you ask something like "wpf datagrid example tutorial")