0

我正在尝试将我的 datagridview 的 itemssource 属性绑定到一个对象列表,这些对象的属性名称在运行时才知道。

代码当前编译但没有显示在列中(数据网格为我的列表中的每个项目显示一行,但每列中没有任何内容)

设置列绑定

foreach (KeyValuePair<string, string> pair in _columns)
{
    Microsoft.Windows.Controls.DataGridTextColumn textCol = new Microsoft.Windows.Controls.DataGridTextColumn();
    textCol.Header = pair.Key;
    textCol.Binding = new Binding(pair.Value);
    ItemListDataGrid.Columns.Add(textCol);
}

硬编码列表示例:

List<List<KeyValuePair<string,string>>> itemSet = new List<List<KeyValuePair<string,string>>>();
List<KeyValuePair<string,string>> item1 = new List<KeyValuePair<string,string>>();
item1.Add(new KeyValuePair<string,string>("ACTION","ACTION"));
itemSet.Add(item1);
ItemListDataGrid.ItemsSource = itemSet;

任何想法如何让它发挥作用?

4

2 回答 2

1

我认为您要做的是实现一个 expando 对象:

http://www.west-wind.com/weblog/posts/2012/Feb/08/Creating-a-dynamic-extensible-C-Expando-Object

也就是说,有关您正在寻找的更多信息将有助于回答您的问题。

于 2012-07-21T03:09:20.480 回答
1

使用动态填充的 DataTable,我能够相对快速地解决这个问题。expando 对象也可以工作,但我只需要将对象加载到 datagridview 中进行选择,之后就不需要它们了。因此,我决定在这种情况下不使用 expando 对象。

于 2012-07-23T16:59:51.487 回答