2011-11-16 15 views
3

これは可能ですか?WPFグリッドコントロールをCSVファイルにデータバインドする

現在、CSVファイルを直接WPF DataGridに読み込もうとしています。ファイルには既知の形式がありません。つまり、フィールドの内容や数がわかりません。私は、ファイル全体をグリッド形式で表示したいだけです(CSVファイルを開いたときのExcelと同様の方法で)。

+0

あなたは常にヘッダ行を持っているのだろうか? – user7116

+0

それが解決策を提供するかどうかを知ることができます –

+0

これはcsv-read/writeの問題です。解析機能を持つとすぐに、ページングなどを実装する方がはるかに簡単です。 –

答えて

0

私は、DataGridのWPFバリアントにすぐには慣れていませんが、一般的な.NET DataGridコントロールとDataGridViewコントロールには慣れていません。このコントロールが同様の方法で動作すると仮定すると、csvファイルを開いて行単位でループし、タブまたはカンマで分割してデータをDataTableにスローするだけでよい。そこからDataGridコントロールのDataSourceをDataTableに設定したり、カスタムの書式設定/表示が必要な場合はDataViewを作成したりしてRefresh()メソッドを呼び出すことができます。

0

DataGridはItemsControlコントロールに基づいており、アイテムはItemsControl.ItemsSourceで表され、whiochタイプはIEnumerableです。したがって、単にCSVをDataGridに表示したいのであれば、IEnumerableを実装している任意のデータ構造でCSVを読み込み、XAMLからバインドしてコードを使ってDataGrid.ItemsSourceプロパティに設定する必要があります。したがって、グリッドにはCSVファイルの行全体を表す単一の列があります。別の列に各値を表示する場合は、IEnumerableデータ構造の各項目(IList<>を提案します)は、IEnumerableと同様に、基本的にIList<IEnumerable<object>>を表す必要があります。

ローカルのデータ構造でCSVを読むには、CSVの構文解析の後でこれを行うのではなく、ときには面倒なことをするよりも、いくつかの無料のCSV解析ライブラリを使うことをお勧めします。場合によってはKBCsv libraryを見てください。

私は、これは何をしようとするのはかなり近い例であると考えている: Binding a ListView to a Data MatrixリストビューがItemsControlにだけでなくので、解決策は、同じことwoudlです)

関連する問題