将DataTable绑定到DataGrid - 无论如何,前两列都是空的

时间:2014-07-10 14:58:29

标签: c# wpf binding datagrid datatable

我正在将DataTable绑定到DataGrid,但前两列始终为空,尽管它显然有内容。

例如, DataTable 包含以下内容:

╔═════════╦═════════╦═════════╦═════════╗
║ Columm1 ║ Column2 ║ Column3 ║ Column4 ║
╠═════════╬═════════╬═════════╬═════════╣
║ A1      ║ A2      ║ A3      ║ A4      ║
║ B1      ║ B2      ║ B3      ║ A4      ║
║ C1      ║ C2      ║ C3      ║ C4      ║
╚═════════╩═════════╩═════════╩═════════╝

可以通过遍历行来确认内容,这些行显示正确的输出:

foreach (DataRow r in Test.Rows)
{
    MessageBox.Show(r[0] + ", " + r[1] + ", " + r[2] + ", " +  r[3]);
}

但是,当我最终将DataTable绑定到DataGrid时......

datagrid.DataContext = Test.DefaultView;

DataGrid 的前两列缺少

╔═════════╦═════════╦═════════╦═════════╗
║ Columm1 ║ Column2 ║ Column3 ║ Column4 ║
╠═════════╬═════════╬═════════╬═════════╣
║         ║         ║ A3      ║ A4      ║
║         ║         ║ B3      ║ A4      ║
║         ║         ║ C3      ║ C4      ║
╚═════════╩═════════╩═════════╩═════════╝

我不知道为什么。 DataGrid似乎配置正确。

<DataGrid x:Name="datagrid" HorizontalAlignment="Left" Margin="810,142,0,0"
          VerticalAlignment="Top" Height="495" Width="400" IsReadOnly="True"
          ItemsSource="{Binding}" BorderThickness="0,1,1,1"/>

问题

列名包含标点符号。删除那些解决了这个问题。

1 个答案:

答案 0 :(得分:2)

wpf如果列名中有特殊字符或标点符号,则Datagrids会出现问题。如果删除这些字符,它应该按预期运行。