DataGrid основан на элементе управления ItemsControl , а элементы представлены ItemsControl.ItemsSource , тип которого IEnumerable
. Поэтому, если вы просто хотите отобразить CSV в DataGrid, вы должны прочитать CSV в любой структуре данных, которая реализует IEnumerable
, и установить для нее свойство DataGrid.ItemsSource
с помощью кода, применяемого для более предпочтительного связывания пути из XAML. Таким образом, ваша сетка будет иметь один столбец, который представляет всю строку файла CSV. Если вы хотите отобразить каждое значение в отдельном столбце - каждый элемент IEnumerable
структуры данных (я бы предложил IList<>
) также должен представлять IEnumerable
, в основном IList<IEnumerable<object>>
.
Чтобы читать CSV в локальной структуре данных, я бы предложил использовать некоторую бесплатную библиотеку синтаксического анализа CSV, а не делать это самостоятельно, поскольку анализ CSV иногда бывает непростым делом. Взгляните на библиотеку KBCsv в качестве примера.
Я считаю, что это довольно близкий пример того, что вы пытаетесь сделать:
Привязка ListView к матрице данных
( ListView - это также ItemsControl, поэтому решение будет таким же )