将WPF网格控件数据绑定到CSV文件

时间:2011-11-16 08:37:22

标签: wpf xaml .net-4.0 csv .net-4.5

这样的事情可能吗?

我目前正在尝试将CS​​V文件直接读入WPF DataGrid。该文件没有已知的格式 - 也就是说,我不知道该字段是什么,或者有多少。我只想以网格格式显示整个文件(与打开CSV文件时excel的方式类似)。

2 个答案:

答案 0 :(得分:0)

我不是很熟悉DataGrid的WPF变体,而是使用一般的.NET DataGrid和DataGridView控件。假设此控件以类似的方式运行,您只需要打开csv文件,逐行读取并在选项卡或逗号上拆分,然后将数据抛出到DataTable中。从那里,您可以将DataGrid控件的DataSource设置为DataTable(或创建DataView,如果您需要一些自定义格式/查看),并调用Refresh()方法。

答案 1 :(得分:0)

DataGrid基于ItemsControl控件,项目由ItemsControl.ItemsSource表示,其类型为IEnumerable。因此,如果您只是想在DataGrid中显示CSV,您应该在任何实现IEnumerable的数据结构中读取CSV,并通过代码behing将其设置为DataGrid.ItemsSource属性,从而更加优先 - 从XAML绑定。因此,您的网格将有一列代表整个CSV文件行。如果您想在单独的列中显示每个值 - IEnumerable数据结构的每个项目(我建议IList<>)也应代表IEnumerable,基本上IList<IEnumerable<object>>。< / p>

要在本地数据结构中读取CSV,我建议使用一些免费的CSV解析库而不是自己这样做,因为解析CSV有时很棘手。看一下KBCsv library作为案例。

我相信这是你想要做的非常接近的例子: Binding a ListView to a Data Matrix ListView也是ItemsControl所以解决方案应该是相同的