我正在尝试将数据添加到数据网格(事实上,任何在网格中呈现数据的控件都可以),但列(名称和数字)直到运行时才知道。
我知道如何创建的专栏:例如
DataGridTextColumn textColumn = new DataGridTextColumn();
textColumn.Header = column.DisplayName;
MyDataGrid.Columns.Add(textColumn);
但如何添加行呢?我不知道如何使用绑定,因为我的数据不包含在具有已知属性的对象中。例如,每行的数据可能以 string[] 的形式出现。因此,一次我可能有三栏,另一次我可能有五栏。
我期待能够做这样的事情:
// Example data to represent a single row.
string[] row1 = new[] { "value1", "value2", "value3" };
var row = new Row;
row.AddCell(row1[0]);
row.AddCell(row1[1]);
row.AddCell(row1[2]);
MyDataGrid.Rows.Add(row);
我必须开始插入 VS 来了解确切的代码,但您很可能只需创建列并使用列键作为绑定表达式,就像索引绑定在 WPF 中工作一样
我将在一分钟内得到一些代码 - 但它看起来像您的行创建代码,但列上的绑定看起来像(原谅可能不正确的方法名称)
textColumn.Bindings.Add(new Binding("this[" + columnIndex.ToString() + "]"));
Update:
是的,不确定这是否是您正在寻找的,但它有效:
创建了一个带有数据网格的单个窗口(dataGrid1)
public MainWindow()
{
InitializeComponent();
var col = new DataGridTextColumn();
col.Header = "Column1";
col.Binding = new Binding("[0]");
dataGrid1.Columns.Add(col);
col = new DataGridTextColumn();
col.Header = "Column2";
col.Binding = new Binding("[1]");
dataGrid1.Columns.Add(col);
col = new DataGridTextColumn();
col.Header = "Column3";
col.Binding = new Binding("[2]");
dataGrid1.Columns.Add(col);
//dataGrid1.ad
List<object> rows = new List<object>();
string[] value;
value = new string[3];
value[0] = "hello";
value[1] = "world";
value[2] = "the end";
rows.Add(value);
dataGrid1.ItemsSource = rows;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)