DataGrid основан на управлении ItemsControl, а позиции представлены ItemsControl.ItemsSource Тип whioch is IEnumerable
. Поэтому, если вы просто хотите отображать CSV в DataGrid, вы должны прочитать CSV в любой структуре данных, которая реализует IEnumerable
и устанавливает ее в свойство 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. Как только у вас будет функция синтаксического анализа, было бы намного проще реализовать подкачку и так далее. –