WPF DataGrid 生成名称不正确的列

WPF DataGrid generates columns with incorrect names

任务很简单 - 使用旧的好 ADO.NET 工具用 DB table 的内容填充 WPF Datagrid 控件。 DataGrid 将 AutoGenerateColumns 属性 设置为 True,因此我没有在 XAML 中指定列 collection。 一切正常,但有一个问题 - DataGRid 列 header 错误地显示了 table 列的名称。例如,所有的列都按照“Prefix_Word1_Word2_Word3”这样的约定命名。取而代之的是,DataGrid 中的列名忽略了第一个下划线符号,因此我可以看到类似“PrefixWord1_Word2_Word3”的 smth。 对于跨多个数据库具有相同命名约定的多个 table,会出现此行为。

关于谁对此负责有什么建议吗?

已添加 piece of columns header of DataGrid

在这种情况下,TPA 是一个前缀。 而不是 TPAID 我应该看到 TPA_ID 等等。

WPF 使用下划线字符而不是符号字符(与 WinForms 一样)在其元素(如 Label 和 Button)的文本中为访问(a.k.a。加速器或助记符)键添加前缀。

您可以使用两个下划线来转义下划线。

下划线替换了 & 符号,因为在 XAML 中,& 符号很容易导致错误和问题。

  • 解决方案 1

只需编写这样的事件处理程序即可暂时转义数据网格中的下划线 header。

private void DataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
    string header = e.Column.Header.ToString();

    // Replace all underscores with two underscores, to prevent AccessKey handling
    e.Column.Header = header.Replace("_", "__");
}

您可以在下一个 link 中找到有关此问题的更多帮助: How to: Customize Auto-Generated Columns in the DataGrid Control