2013-05-07 8 views
0

목록보기를 만드는 데 문제가 있습니다. 나는 C#과 wpf도 새롭다. 입력 배열이 NxN 차원이기 때문에 ListView 항목을 채우는 여러 가지 방법을 시도했지만 해결할 수 없습니다. Bindig에 대한 지침이 있지만 입력 배열이 동적이기 때문에 해당 유형의 객체를 만들 수 없기 때문에 Bindig에 적용 할 수 없습니다. 헤더 열은 채울 수 있지만 값이있는 행과 열은 채울 수 없습니다. 이 코드는 작동하지만 모든 값이 하나의 열에 함께 있습니다.C# wpf listview 추가 항목

public void PrintListView(ResultsTable results) 
    { 
     System.Windows.Controls.GridView gv = new System.Windows.Controls.GridView(); 
     gv.AllowsColumnReorder = true; 

     int j=0; 
     foreach (DataColumn dc in results.Columns) 
     { 
      GridViewColumn gvCol = new GridViewColumn(); 
      gvCol.Header = results.Columns[j].ColumnName; 
      gvCol.Width = 200;    
      gv.Columns.Add(gvCol); 
      j++;   
     } 
     lbVysledky.View = gv; 

     foreach (DataRow dr in results.Rows) 
     { 
      string[] array1 = new string[1000]; 
      // List<string> zoznam = new List<string>(); 
     // ObservableCollection<string> kolekcia = new ObservableCollection<string>(); 
      int i = 0; 
      foreach (DataColumn dc in results.Columns) 
      {   
       array1[i] = dr[dc].ToString(); 
      //  zoznam.Add (dr[dc].ToString()); 
      //  kolekcia.Add(dr[dc].ToString());     
       i++; 
      } 
      this.lbVysledky.Items.Add(new ListViewItem { Content = pole[0] + pole[1]});     
     }     
    } 

나를 도와 줄 사람이 있습니까? 감사합니다.

답변

0

행과 열을 한 번에 하나씩 추가하여 ListView을 채우려는 것 같습니다. 이것은 ListView을 채울 때 사용할 방법이 아닙니다. 대신 ItemsSource (이 경우 결과 개체)을 추가하고 이 각 열에 대한 내용을 ListView에 알려주고 각 행의 각 열에 적절한 값을 표시합니다.

아마 당신이 이런 식으로 ListView에 열을 추가하여 루프를 수정하는 의미

lbVysledky.ItemsSource = results; 
:

foreach (DataColumn dc in results.Columns) 
{ 
    GridViewColumn gvCol = new GridViewColumn(); 
    gvCol.DisplayMemberBinding = new Binding(dc.ColumnName);   
    gvCol.Header = results.Columns[j].ColumnName; 
    gvCol.Width = 200;  
    gv.Columns.Add(gvCol); 
    j++;   
} 
lbVysledky.View = gv; 

그런 다음 당신의 결과에 ListViewItemsSource이 같은 객체 설정

또한 부수적으로 foreach 구조가 올바르게 사용되지 않는 것으로 보입니다. 각 컬럼을 통해 열거하고 있지만 당신은 당신의 자신의 카운터를 유지하고이 같은 열 액세스하는 : 당신은 이미 직류 변수로 열을 열거하고 foreach 루프에서

gvCol.Header = results.Columns[j].ColumnName; 

을, 그래서 당신은 할 수

gvCol.Header = dc.ColumnName; 

과 같이 열을 수동으로 계산할 필요가 없습니다.

+0

답장을 보내 주셔서 감사합니다. 문제가 해결되었습니다. – user2358681