我正在尝试将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;
任何想法如何让这个工作?
答案 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对象。