我还在学习XAML和WPF。我希望能够创建我自己的网格与我自己的控制。我在函数中传递了网格和一个格式列表,其中包括格式(例如textbox或combobox)和名称。我希望它在新行中的每第三个控件之后开始,而不管列表中提供了多少控件。
不幸的是,代码并没有指向目标,看起来像这样:The Form
也许有人知道如何更好地解决它。它看起来不太好。有没有办法让它看起来既匀称又好看?
public Grid GetGridWithMaskControls(Grid grid, List<Format> formats) {
int columnIndex = 0;
int rowIndex = 0;
for(int i = 0; i < formats.Count; i++) {
if(i % 3 == 0) {
rowIndex++;
columnIndex = 0;
}
grid.ColumnDefinitions.Add(new ColumnDefinition());
RowDefinition row = new RowDefinition();
row.Height = new GridLength(25);
grid.RowDefinitions.Add(row);
Label t1 = new Label();
Format format = formats[i];
t1.Content = format.FieldName;
TextBox tb = new TextBox();
tb.Height = 20;
tb.Width = 120;
Grid.SetColumn(tb, i);
Grid.SetRow(tb,rowIndex);
grid.Children.Add(tb);
Grid.SetColumn(t1, i);
Grid.SetRow(t1, rowIndex);
grid.Children.Add(t1);
columnIndex++;
}
return grid;
}
1条答案
按热度按时间kmbjn2e31#
问题是你不必为每一行添加列定义。
我想你想要这样的输出: