是這樣的可能嗎?將WPF網格控件數據綁定到CSV文件
我目前正試圖直接讀取一個CSV文件到WPF DataGrid中。該文件沒有已知的格式 - 也就是說,我不知道該字段是什麼,或者有多少。我只想以網格格式顯示整個文件(類似於打開CSV文件時excel的功能)。
是這樣的可能嗎?將WPF網格控件數據綁定到CSV文件
我目前正試圖直接讀取一個CSV文件到WPF DataGrid中。該文件沒有已知的格式 - 也就是說,我不知道該字段是什麼,或者有多少。我只想以網格格式顯示整個文件(類似於打開CSV文件時excel的功能)。
我並不是馬上熟悉DataGrid的WPF變體,而是使用一般的.NET DataGrid和DataGridView控件。假設這個控件以類似的方式運行,你只需要打開csv文件,循環讀取它,逐行閱讀,並以選項卡或逗號分割,然後將數據扔到DataTable中。從那裏,您可以將DataGrid控件的DataSource設置爲DataTable(或者如果您需要一些自定義格式/查看,則創建DataView),並調用Refresh()方法。
DataGrid基於ItemsControl控件,而項目由ItemsControl.ItemsSource表示,其類型爲IEnumerable
。因此,如果您只是想在DataGrid中顯示CSV,則應該在任何實施IEnumerable
的數據結構中讀取CSV,並將其設置爲DataGrid.ItemsSource
屬性,方法是以更優選的方式從XAML綁定代碼。所以你的網格將有一列代表整個CSV文件行。如果您想在單獨的列中顯示每個值 - IEnumerable
數據結構(我建議IList<>
)的每個項目也應該表示IEnumerable
,基本上IList<IEnumerable<object>>
。
要讀取本地數據結構中的CSV,我建議使用一些免費的CSV解析庫,而不是自己做這件事,因爲解析CSV有時是件棘手的事情。以KBCsv library爲例。
我相信這是你正在嘗試做八九不離十例如: Binding a ListView to a Data Matrix (的ListView是ItemsControl的,以及做方案woudl相同)
請問你總是有一個標題行? – user7116
我可以有,如果這提供了一個解決方案 –
這是更多的CSV讀/寫問題。只要您具有解析功能,實現分頁等操作就會更容易。 –