我需要以编程方式从DataTable填充WPF DataGrid。列的列表在设计时不知道。
应该基于具有单个Label的简单模板手动生成列(AutoGeneratingColumn事件?)。 Label.Content是列名。现在绑定允许 - 模板可以在XAML中创建,但其他一切都需要在C#
中有点复杂的方法是行。数据单元格模板应具有单个Label或TextBox,但应在运行时设置单元格模板。例如,字符串应该在单元格中表示长度为5个字符,然后应该使用基于标签的模板。否则,应使用TextBox模板。 同样,只能在XAML中创建模板。填写数据需要在C#
中完成这里有一些代码可以开始生成数据:
DataTable myTable = new DataTable(tableName);
myTable.Columns.Add(new DataColumn("id", typeof(int)));
myTable.Columns.Add(new DataColumn("name", typeof(string)));
myTable.Rows.Add(new object[] {1, "label"});
myTable.Rows.Add(new object[] {2, "text box"});
答案 0 :(得分:0)
您可以通过定义DataGridTextColumn以编程方式在数据网格中添加列,并设置其宽度,标题和绑定。
这是一个让你了解
的小例子DataGridTextColumn column1 = new DataGridTextColumn();
column1.Header = myTable.Columns[0].Caption;
column1.Width = new DataGridLength(1, DataGridLengthUnitType.Star);
column1.Binding = new Binding("column1_name");
DataGridTextColumn column1 = new DataGridTextColumn();
column1.Header = myTable.Columns[1].Caption;
column1.Width = new DataGridLength(1, DataGridLengthUnitType.Star);
column1.Binding = new Binding("column2_name");
dataGrid.Columns.Add(column1);
dataGrid.Columns.Add(column2);
使用这种方式,您可以在datagrid中定义多个列,而无需在设计时知道no.of列