wpf - 将 String[] 转换为 Expando 以在 WPF 中绑定(bind) DataGrid

标签 wpf dynamic wpf-controls binding

我正在开发一个解析文件并将其导入 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>

结果:

alt text

关于wpf - 将 String[] 转换为 Expando 以在 WPF 中绑定(bind) DataGrid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4617307/

相关文章:

C++ 存储输入行

php - 在 WordPress 中动态创建页面

javascript - 如何保存 HTML 中的更改?

WPF 自定义控件 : TemplateBinding to Image

WPF。如何只显示大 Canvas 的一部分?

c# - 如何在MVVM中创建WPF UserControl

wpf - Windows 8 和 LOB 应用

c# - WPF 位图图像异常 "The image data generated an overflow during processing"

WPF ColorAnimation似乎保留了部分原始颜色?

wpf - 滚动到单行 WPF TextBox 的末尾