Используйте ListView, а не ListBox, тогда вы можете использовать GridView для столбцов, или вы можете использовать DataGrid, который дополнительно может автоматически создавать столбцы на основе полученных данных, хотя для этого требуются свойства, которые не так хороши создать на лету.
Я бы посоветовал вам разобрать данные в объекты массива и создать столбцы, перебирая их длину. Добавляем привязки так: new Binding("[" + i + "]")
.
Вот грубый набросок:
<ListView Name="csvLv"/>
var view = new GridView();
csvLv.View = view;
using (var reader = new StreamReader(@"PathGoesHere.csv"))
{
//This is just a sketch and all the data extraction depends on your format
var lines = reader.ReadToEnd()
.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries)
.Select(x => x.Split(',')).ToArray();
var headers = lines[0];
var data = lines.Skip(1);
for (int i = 0; i < headers.Length; i++)
{
view.Columns.Add(new GridViewColumn()
{
Header= headers[i],
DisplayMemberBinding = new Binding("[" + i + "]")
});
}
csvLv.ItemsSource = data;
}