这样的事情可能吗?
我目前正在尝试将CSV文件直接读入WPF DataGrid。该文件没有已知的格式 - 也就是说,我不知道该字段是什么,或者有多少。我只想以网格格式显示整个文件(与打开CSV文件时excel的方式类似)。
答案 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所以解决方案应该是相同的)