Отображение динамических столбцов в списке - PullRequest
2 голосов
/ 01 сентября 2011

Я хочу написать приложение, которое будет отображать данные из файла CSV.

Я думал, что для этого будет проще всего использовать список.

Я просто не уверен, как определить шаблон данных, чтобы вместить столько столбцов, сколько хочет определить CSV. Есть ли способ определить количество столбцов в, скажем, сетке, основываясь на количестве элементов в списке?

1 Ответ

4 голосов
/ 01 сентября 2011

Используйте 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...