DataGridView数据绑定到List <list <keyvaluepair <string,string>&gt;&gt; </list <keyvaluepair <string,string>

时间:2012-07-20 21:52:26

标签: c# wpf data-binding wpfdatagrid

我正在尝试将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;

任何想法如何让这个工作?

2 个答案:

答案 0 :(得分:1)

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

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

那就说你想要的更多信息将有助于回答你的问题。

答案 1 :(得分:1)

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