我是WPF的新手.我只想知道如何以编程方式将列和行添加到WPF中的DataGrid.我们过去常常在Windows窗体中执行此操作.创建表列和行,并将其绑定到DataGrid.
我相信WPF DataGrid与ASP.net和Windows形式中使用的有点不同(如果我错了,请纠正我).
我有需要在DataGrid中绘制的行数和列数,以便用户可以编辑单元格中的数据.
以编程方式添加一行:
DataGrid.Items.Add(new DataItem());
以编程方式添加列:
DataGridTextColumn textColumn = new DataGridTextColumn(); textColumn.Header = "First Name"; textColumn.Binding = new Binding("FirstName"); dataGrid.Columns.Add(textColumn);
有关更多信息,请查看WPF DataGrid讨论板上的这篇文章.
试试这个,它100%工作:以编程方式添加列和行:首先需要创建项类:
public class Item { public int Num { get; set; } public string Start { get; set; } public string Finich { get; set; } } private void generate_columns() { DataGridTextColumn c1 = new DataGridTextColumn(); c1.Header = "Num"; c1.Binding = new Binding("Num"); c1.Width = 110; dataGrid1.Columns.Add(c1); DataGridTextColumn c2 = new DataGridTextColumn(); c2.Header = "Start"; c2.Width = 110; c2.Binding = new Binding("Start"); dataGrid1.Columns.Add(c2); DataGridTextColumn c3 = new DataGridTextColumn(); c3.Header = "Finich"; c3.Width = 110; c3.Binding = new Binding("Finich"); dataGrid1.Columns.Add(c3); dataGrid1.Items.Add(new Item() { Num = 1, Start = "2012, 8, 15", Finich = "2012, 9, 15" }); dataGrid1.Items.Add(new Item() { Num = 2, Start = "2012, 12, 15", Finich = "2013, 2, 1" }); dataGrid1.Items.Add(new Item() { Num = 3, Start = "2012, 8, 1", Finich = "2012, 11, 15" }); }
我有同样的问题.向WPF添加新行DataGrid
需要一个技巧.DataGrid
依赖于项目对象的属性字段.ExpandoObject
允许动态添加新属性.下面的代码解释了如何执行此操作:
// using System.Dynamic; DataGrid dataGrid; string[] labels = new string[] { "Column 0", "Column 1", "Column 2" }; foreach (string label in labels) { DataGridTextColumn column = new DataGridTextColumn(); column.Header = label; column.Binding = new Binding(label.Replace(' ', '_')); dataGrid.Columns.Add(column); } int[] values = new int[] { 0, 1, 2 }; dynamic row = new ExpandoObject(); for (int i = 0; i < labels.Length; i++) ((IDictionary)row)[labels[i].Replace(' ', '_')] = values[i]; dataGrid.Items.Add(row);
//编辑:
请注意,这不是组件应该如何使用的方式,但是,如果您只有编程生成的数据(例如,在我的情况下:一系列功能和神经网络输出),它会简化很多.
我找到了一个在运行时添加列的解决方案,并绑定到DataTable
.
如何将WPF DataGrid绑定到可变数量的列?
不幸的是,有47列以这种方式定义,它不能足够快地绑定到数据上.有什么建议?
XAML
xaml.cs 使用System.Windows.Data;
if (table != null) // table is a DataTable { foreach (DataColumn col in table.Columns) { dataGrid.Columns.Add( new DataGridTextColumn { Header = col.ColumnName, Binding = new Binding(string.Format("[{0}]", col.ColumnName)) }); } dataGrid.DataContext = table; }