2012-08-06 2 views
0

클래스 (ID, 이름, 코드, 가격)를 기반으로하는 목록과 그 값을 DataGrid에 추가하려고하는 메신저가 있습니다. enter image description here빈 DataGrid WPF

XAML을 뒤에

<DataGrid AutoGenerateColumns="False" Height="275" HorizontalAlignment="Left" Margin="337,51,0,0" Name="dataGridProducts" VerticalAlignment="Top" Width="403" Foreground="#FF803E3E"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="ID" Width="30" /> 
     <DataGridTextColumn Header="Nazwa" Width="200" /> 
     <DataGridTextColumn Header="Kod" Width="120" /> 
     <DataGridTextColumn Header="Cena" Width="100" /> 
    </DataGrid.Columns> 
</DataGrid> 

코드 :

private void categoryListBox_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    SqlConnection SqlConn = new SqlConnect().ConnectToSql(); 
    using (SqlConn) 
    { 
     SqlConn.Open(); 
     SqlCommand fillCategories = new SqlCommand("...", SqlConn); 
     SqlDataReader rdr1; 
     rdr1 = fillCategories.ExecuteReader(); 
     while (rdr1.Read()) 
     { 
      Products p = new Products(rdr1.GetInt32(rdr1.GetOrdinal("ID")), rdr1.GetString(rdr1.GetOrdinal("ProductName")), rdr1.GetString(rdr1.GetOrdinal("Barcode")), rdr1.GetString(rdr1.GetOrdinal("Price"))); 
      completeProductList.Add(p); 
     } 
    } 
    dataGridProducts.ItemsSource = completeProductList; 
} 

를 해결하는 방법에 어떤 솔루션이 문제는, 데이터 그리드는 여전히 비어 있다는 것입니다, 나는 그 같이 의미 그것?

당신은 데이터 그리드 항목 소스의 클래스의 값으로 열을 바인딩해야합니다
+0

적어도이 부분의 xaml을 공유해야합니다. 클래스 선언도 도움이 될 것입니다. – Maverik

+0

오, 젠장, 여기에 xaml 코드를 입력했지만 너무 나 빠졌습니다. 다음은 xaml 및 클래스에 대한 링크입니다. http://pastebin.com/RD3YySDf – user13657

+1

MVVM 패턴을 사용하고 있지 않습니까? 귀하의 코드에서 내 생각에 자동으로 열을 생성하려고하지만 xaml에 정의 된 열뿐만 아니라 바인딩이 없으므로 어떤 데이터도 표시 할 수 없습니다. – Maverik

답변

4

예 :

- ID 
    - Name 
    - Address 

각을 바인드해야합니다 : 당신의 datagrid.ItemsSource 3 열이있는 테이블이다 경우 테이블의 열에 대한 데이터 격자의 열 :

... 
<DataGridTextColumn Header="ID" Binding="{Binding Path=ID}" Width="Auto" /> 
<DataGridTextColumn Header="Name" Binding="{Binding Path=Name}" Width="Auto" /> 
<DataGridTextColumn Header="Address" Binding="{Binding Path=Address}" Width="Auto" /> 
... 

그러면 테이블의 바운드 값이 표시됩니다.