首页 > 解决方案 > WPF DataGrid 生成名称不正确的列

问题描述

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

关于谁对此负责的任何建议?

添加了 DataGrid 的列标题

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

标签: wpfdatagridado.net

解决方案


WPF 使用下划线字符而不是 & 字符(与 WinForms 一样)在其元素(如标签和按钮)的文本中为访问键(也称为加速键或助记符)添加前缀。

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

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

  • 解决方案 1

只需编写一个像这样的事件处理程序来临时转义数据网格标题中的下划线。

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("_", "__");
}

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


推荐阅读