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

3

这种情况是否可能呢?

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


你的表格是否总会有标题行? - user7116
我可以提供一个解决方案。 - Paul Michaels
这更多是CSV读写问题。一旦您拥有解析功能,实现分页等操作就会变得更加容易。 - Anatolii Gabuza
2个回答

0

我对WPF版本的DataGrid不是很熟悉,但对于一般的.NET DataGrid和DataGridView控件则比较了解。假设这个控件的操作方式类似,你只需要打开csv文件,逐行读取并按制表符或逗号进行分割,然后将数据放入DataTable中。从那里,你可以将DataGrid控件的DataSource设置为DataTable(或创建DataView,如果需要一些自定义格式/视图),并调用Refresh()方法。


0

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

为了在本地数据结构中读取CSV,我建议使用一些免费的CSV解析库,而不是自己处理,因为CSV的解析有时很棘手。可以看看KBCsv库
我认为这是你尝试做的事情的相当接近的例子: 将ListView绑定到数据矩阵ListView也是ItemsControl,所以解决方案是相同的

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接