我正在开发一个解析文件并将其导入 WPF DataGrid 的系统。这些文件被分割成一个集合 string[] 并传回给我以在 UI 中显示。
将 string[] 集合转换为可以绑定(bind)到 WPF (.NET4) DataGrid 的内容的最简单方法是什么?
旁白:我想使用 Expando ......
最佳答案
不幸的是,在我的测试中,像 Expando
这样的动态对象还不能与 WPF4 一起使用。但是,还有其他经过验证且真实的方法可用。
对于 String[]
的集合,您可以使用 DataTable
来提供动态列:
var rawData = new string[][]
{
new string[] { "R1F1", "R1F2", },
new string[] { "R2F1", "R2F2", },
};
var fieldNames = Enumerable.Range(1, rawData[0].Length).Select(field => "Field" + field);
var table = new DataTable();
table.Columns.AddRange(fieldNames.Select(fieldName => new DataColumn(fieldName)).ToArray());
foreach (var record in rawData)
{
DataRow row = table.NewRow();
for (int i = 0; i < record.Length; i++)
{
row[i] = record[i];
}
table.Rows.Add(row);
}
DataContext = table;
与 XAML 一起使用,如下所示:
<Grid>
<DataGrid ItemsSource="{Binding}"/>
</Grid>
结果:
关于wpf - 将 String[] 转换为 Expando 以在 WPF 中绑定(bind) DataGrid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4617307/