绑定列表<list <string>&gt;到DataGrid </list <string>

时间:2013-11-22 14:08:58

标签: c# wpf datagrid

我想知道如何将List<List<String>>绑定到WPF中的DataGrid列。说我有以下代码:

List<List<string>> ugly = new List<List<string>>();
List<string> u0 = new List<string>{"one", "two", "three", "four"};
List<string> u1 = new List<string> { "five", "six", "seven", "eight" };
List<string> u2 = new List<string> { "nine", "ten", "eleven", "twelve" };
ugly.Add(u0);
ugly.Add(u1);
ugly.Add(u2);

如果我将datagrid的ItemsSource(名为dataGrid)设置为List<string>之一,则会在列中填入适当的数据。例如,dataGrid.ItemsSource = u0会产生以下结果:

enter image description here

如何制作,以便List<String>中的每个ugly都有一列?

2 个答案:

答案 0 :(得分:0)

如果您知道外部集合中有多少项目,那么您可以在显示内部List<string>集合之前将其复制到匿名类型中。 ..使用你的例子:

var item = new { Column1 = u0, Column2 = u1, Column3 = u2 };
YourDataGrid.ItemsSource = item;

您可以在我对StackOverflow上的WPF : Dynamically create a grid with specified x rows and y columns问题的回答中找到更多信息。

答案 1 :(得分:0)

dataGrid中的

Column对应于基础DataItem集合中的property。您可以使用包含三个属性的匿名类型数组来完成此操作。

还要确保dataGrid AutoGenerateColumns设置为true

dg.ItemsSource = new[] { new { First = u0[0], Second = u1[0], Third = u2[0] },
                         new { First = u0[1], Second = u1[1], Third = u2[1] },
                         new { First = u0[2], Second = u1[2], Third = u2[2] },
                         new { First = u0[3], Second = u1[3], Third = u2[3] }};