0

クラス (ID、名前、コード、価格) に基づくリストがあり、その値をデータグリッドに追加しようとしています。問題は、データグリッドがまだ空であることです。つまり、次のようになります。 ここに画像の説明を入力

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;
}

それを修正する方法はありますか?

4

1 に答える 1

4

データグリッド項目ソースのクラスの値に列をバインドする必要があります

例: datagrid.ItemsSource が 3 列のテーブルの場合:

    - ID
    - Name
    - Address

データグリッドの各列をテーブルの列にバインドする必要があります。

    ...
<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" />
...

次に、テーブルのバインドされた値が表示されます。

于 2012-08-06T14:02:24.090 に答える