C# 为什么我的数据网格中的每个单元格都显示;System.Data.DataRowView“;而不是实际数据?(WPF)

C# 为什么我的数据网格中的每个单元格都显示;System.Data.DataRowView“;而不是实际数据?(WPF),c#,wpf,datatable,datagrid,C#,Wpf,Datatable,Datagrid,我正在尝试将csv读入我的数据网格。我需要做的就是获取csv并将其放入数据网格中。这是我找到的C#: 然后: dgvInventory.ItemsSource = CreateDataSource(); 在我的XAML中: <DataGrid x:Name="dgvInventory" ItemsSource="{Binding}" Grid.Column="1" Margin="0" Grid.Row=&q

我正在尝试将csv读入我的数据网格。我需要做的就是获取csv并将其放入数据网格中。这是我找到的C#:

然后:

dgvInventory.ItemsSource = CreateDataSource();
在我的XAML中:

<DataGrid x:Name="dgvInventory" ItemsSource="{Binding}" Grid.Column="1" Margin="0" Grid.Row="1" BorderBrush="{x:Null}" Background="#FF0B123F" AutoGenerateColumns="False">
                <DataGrid.Columns>
                    <DataGridTextColumn Binding="{Binding}" Header="ID"/>
                    <DataGridTextColumn Binding="{Binding}" Header="Type"/>
                    <DataGridTextColumn Binding="{Binding}" Header="Brand"/>
                    <DataGridTextColumn Binding="{Binding}" Header="Line"/>
                </DataGrid.Columns>
            </DataGrid>

此操作的输出是显示“System.Data.DataRowView”的每个单元格,而不是实际数据。


如何使数据网格显示正确的数据?

列绑定必须使用相应的属性路径:

<DataGrid.Columns>
    <DataGridTextColumn Binding="{Binding ID}" Header="ID"/>
    <DataGridTextColumn Binding="{Binding Type}" Header="Type"/>
    <DataGridTextColumn Binding="{Binding Brand}" Header="Brand"/>
    <DataGridTextColumn Binding="{Binding Line}" Header="Line"/>
</DataGrid.Columns>
<DataGrid.Columns>
    <DataGridTextColumn Binding="{Binding ID}" Header="ID"/>
    <DataGridTextColumn Binding="{Binding Type}" Header="Type"/>
    <DataGridTextColumn Binding="{Binding Brand}" Header="Brand"/>
    <DataGridTextColumn Binding="{Binding Line}" Header="Line"/>
</DataGrid.Columns>
private IEnumerable CreateDataSource()
{
    var CSVDataBase = ...

    return File.ReadLines(CSVDataBase).Select(
        line =>
        {
            var items = line.Split(',');
            return new
            {
                ID = int.Parse(items[0]),
                Type = items[1],
                Brand = items[2],
                Line = items[3]
            };
        });
}