WPF中绑定DataTable的DataGrid添加列后不显示如何解决?
问题根因
你的代码存在两个WPF DataGrid绑定的常见逻辑遗漏:
AutoGenerateColumns="True"的触发时机仅为ItemsSource属性发生变更时,你首次点击first_Click已经将空DataTable的DefaultView绑定到了DataGrid,此时已触发过一次列生成(生成了0列);后续在second_Click中修改DataTable的Columns集合时,ItemsSource对应的实例没有发生变化,不会触发重新生成列的逻辑。- WPF DataGrid默认在绑定数据源无任何行数据时,不会展示列头,哪怕DataTable已经定义了列结构。
解决方法
方案1:绑定后强制刷新列生成+强制显示列头
- 调整XAML配置,强制DataGrid始终显示列头:
<DataGrid x:Name="DataGrid1" ... AutoGenerateColumns="True" ItemsSource="{Binding}" HeadersVisibility="Column"/>
- 在
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
相关产品推荐
相关产品推荐

