2011-09-01 4 views
2

CSV 파일의 데이터를 표시하는 응용 프로그램을 작성하고 싶습니다.목록 상자에 동적 열 표시

나는 이것을하기 위해리스트 박스를 사용하는 것이 가장 쉽다고 생각했다.

CSV가 정의하고자하는만큼의 열을 수용하기 위해 데이터 템플릿을 정의하는 방법을 모르겠습니다. 어쩌면 목록의 항목 수에 따라 그리드의 열 수를 정의하는 방법이 있습니까?

답변

4

ListBox 대신 ListView를 사용하면 열에 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; 
} 
+0

:

여기에 대략적인 윤곽입니까? – Luke

+0

@ 루케 : 인덱서를 통해 액세스 한 i 번째 항목에 바인딩하여 각 열에 항목의 i 번째 항목을 표시합니다.이 항목은 모든 열에 대한 모든 값을 포함하는 배열입니다. –

+0

맞아, 내가 할 수 있다고 생각해. 감사. – Luke