2
我想編寫一個將顯示CSV文件數據的應用程序。在列表框中顯示動態列
我認爲這將是最容易使用列表框來做到這一點。
我只是不確定如何定義數據模板以適應csv希望定義的列數。有沒有辦法根據列表中的項目數來定義網格中的列數?
我想編寫一個將顯示CSV文件數據的應用程序。在列表框中顯示動態列
我認爲這將是最容易使用列表框來做到這一點。
我只是不確定如何定義數據模板以適應csv希望定義的列數。有沒有辦法根據列表中的項目數來定義網格中的列數?
使用一個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;
}
我很困惑,什麼是 「[」 + I + 「]」 指的? – Luke
@Luke:它綁定到通過索引器訪問的第i個項目,以便每列顯示項目中的第i個條目,該條目是包含所有列的所有值的數組。 –
對,我想我可以做到這一點。謝謝。 – Luke