【发布时间】:2019-01-03 21:05:47
【问题描述】:
我想创建一个表格,我可以在其中动态添加文本框类型的行和列或通过用户输入。
然后我尝试使用表格,但现在我只能控制行而不是列。
table1 = new Table();
TextBox tbx = new TextBox();
TableRow row = new TableRow();
trg1.Rows.Add(row);
Paragraph para = new Paragraph();
para.Inlines.Add(tbx);
TableCell cell = new TableCell(para);
row.Cells.Add(cell);
我尝试在 wpf 中的 DataGrid 上执行此操作,但我只能控制列数而不是行数。
myGrid.Columns.Clear();
ObservableCollection<EmptyCell> collection = new ObservableCollection<EmptyCell>();
for (int i = 0; i < 4; i++) {
DataGridTemplateColumn dtg = new DataGridTemplateColumn();
dtg.CanUserResize = true;
dtg.IsReadOnly = false;
dtg.CellTemplate = getDataTemplate();
myGrid.CanUserAddRows = true;
myGrid.ItemsSource = collection;
myGrid.Columns.Add(dtg);
}
}
private static DataTemplate getDataTemplate()
{
DataTemplate template = new DataTemplate();
FrameworkElementFactory factory = new FrameworkElementFactory(typeof(TextBox));
factory.SetValue(TextBox.TextAlignmentProperty, TextAlignment.Right);
template.VisualTree = factory;
return template;
}
【问题讨论】:
-
我通常使用DataTable。 DataTable 可以动态创建,行可以动态添加。 DataTable 可以用作控件的 DataSource 或绑定。
-
就是这样,我不想绑定它。它必须像写字板中的表格一样为空。
-
解释得更好。你的评论完全没有意义。你怎么能绑定到空的东西上?我假设你的意思是一个空的数据表。您可以在 DataTable 中动态创建列,然后根据需要添加行。
-
我的意思是,正如您在上面的代码中看到的那样,我将每个单元格都设为了一个文本框。没有数据开始。我正在创建的表将接受用户的输入,甚至不必保存它。
-
对于任何表格或网格,您一次添加一行。最后一行是输入新数据的地方。表单 DataGridView 有一个允许编辑的选项,当设置该属性时,当新数据输入到前一个最后一行时,会创建一个新的空白行。