gpt4 book ai didi

c# - 将行添加到 WPF 数据网格,其中列直到运行时才知道

转载 作者:太空狗 更新时间:2023-10-29 21:06:01 27 4
gpt4 key购买 nike

我正在尝试将数据添加到数据网格(事实上,任何在网格中显示数据的控件都可以),但是列(名称和数字)直到运行时才知道。

我知道如何创建的列:例如

DataGridTextColumn textColumn = new DataGridTextColumn();
textColumn.Header = column.DisplayName;
MyDataGrid.Columns.Add(textColumn);

但是如何添加行呢?我不知道如何使用绑定(bind),因为我的数据不包含在具有已知属性的对象中。例如,每一行的数据可能以字符串 [] 的形式出现。所以一次我可能有三列,另一次我可能有五列。

我期待能够做这样的事情:

// 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 中埋头苦干才能弄清楚确切的代码,但您很可能只创建列并使用列键作为绑定(bind)表达式,因为索引绑定(bind)在 WPF 中有效

我会在一分钟内编写一些代码 - 但它看起来有点像您的行创建代码,但在列上的绑定(bind)看起来像(请原谅可能不正确的方法名称)

textColumn.Bindings.Add(new Binding("this[" + columnIndex.ToString() + "]"));

更新:

是的,不确定这是否是您正在寻找的,但它有效:

创建了一个带有数据网格的单个窗口 (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;
}

Example

关于c# - 将行添加到 WPF 数据网格,其中列直到运行时才知道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10650985/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com