我想创建一个表,在其中可以动态添加文本框类型的行和列,也可以通过用户输入来添加行和列。
然后我尝试使用表,但是现在我只能控制行,而不能控制列。
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;
}
答案 0 :(得分:0)
您最好的方法是使用二维数组作为数据源,并将其绑定到itemsControl
(对于行)中,该ItemsControl
在其ItemTemplate
内部(对于列而言) )。
通过这种解决方案,您可以通过仅添加到二维数组并重新绑定(如果其不基于INotifyColectionChanged
数据数据结构)来添加其他行/列