You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WPF中绑定DataTable的DataGrid添加列后不显示如何解决?

问题根因

你的代码存在两个WPF DataGrid绑定的常见逻辑遗漏:

  1. AutoGenerateColumns="True"的触发时机仅为ItemsSource属性发生变更时,你首次点击first_Click已经将空DataTable的DefaultView绑定到了DataGrid,此时已触发过一次列生成(生成了0列);后续在second_Click中修改DataTable的Columns集合时,ItemsSource对应的实例没有发生变化,不会触发重新生成列的逻辑。
  2. WPF DataGrid默认在绑定数据源无任何行数据时,不会展示列头,哪怕DataTable已经定义了列结构。

解决方法

方案1:绑定后强制刷新列生成+强制显示列头

  1. 调整XAML配置,强制DataGrid始终显示列头:
<DataGrid x:Name="DataGrid1" ... AutoGenerateColumns="True" ItemsSource="{Binding}" HeadersVisibility="Column"/>
  1. 在second_Click添加列的逻辑完成后,重新绑定数据源触发列生成:
private ...second_Click(object sender, ...)
{
    dt_main.Columns.Clear();
    ...
    while (...)
      dt_main.Columns.Add(tmp_ColName);
    // 新增以下代码重新绑定触发列生成
    DataGrid1.DataContext = dt_main.DefaultView;
}

方案2:添加空占位行(无需修改XAML)

如果不想改HeadersVisibility配置,可以在添加完列后给DataTable加一行空值行,触发DataGrid展示列:

private ...second_Click(object sender, ...)
{
    dt_main.Columns.Clear();
    ...
    while (...)
      dt_main.Columns.Add(tmp_ColName);
    // 新增空行触发列展示
    dt_main.Rows.Add(dt_main.NewRow());
    DataGrid1.DataContext = dt_main.DefaultView;
}

内容的提问来源于stack exchange,提问作者Dominique

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 10:51:04