" /> 使用带有 AutoGenerateColumns="True" 的 DataGrid 时,为什么会忽略 DataAnnotations <Display(Name:="My Name")>

使用带有 AutoGenerateColumns="True" 的 DataGrid 时,为什么会忽略 DataAnnotations

2024-03-24

我正在使用 WPF DataGrid 绑定到自定义类的集合。在网格 XAML 中使用 AutoGenerateColumns="True",可以很好地创建和填充网格,但正如人们所期望的那样,标题是属性名称。

我尝试指定

<Display(Name:="My Name")> 

来自 System.ComponentModel.DataAnnotations 命名空间,这没有任何效果。我也尝试过

<DisplayName("My Name")> 

来自 System.ComponentModel 命名空间,但标题仍然不受影响。

是否无法使用 AutoGenerateColumns 选项指定列标题?


使用@Marc的建议是解决方案的开始,但就其本身而言,自动生成的列仍然将属性名称作为标题。

要获取 DisplayName,您需要添加一个例程(在后面的代码中)来处理 Grid AutoGenerateColumn 事件:

Private Sub OnGeneratingColumn(sender As Object, e As System.Windows.Controls.DataGridAutoGeneratingColumnEventArgs) Handles Grid.AutoGeneratingColumn
    Dim pd As System.ComponentModel.PropertyDescriptor = e.PropertyDescriptor
    e.Column.Header = pd.DisplayName
End Sub

另一个更好的解决方案是使用 ComponentModel.DataAnnotations 命名空间并指定 ShortName:

Public Class modelQ016
    <Display(shortname:="DB Name")>
    Public Property DBNAME As String
    ...

OnGenerateColumn 变为:

        Dim pd As System.ComponentModel.PropertyDescriptor = e.PropertyDescriptor
        Dim DisplayAttrib As System.ComponentModel.DataAnnotations.DisplayAttribute =
            pd.Attributes(GetType(ComponentModel.DataAnnotations.DisplayAttribute))
        If Not DisplayAttrib Is Nothing Then
            e.Column.Header = DisplayAttrib.ShortName
        End If

请注意,属性数组中属性的顺序会发生变化,因此您必须使用 GetType(...) 而不是数字参数...真有趣!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用带有 AutoGenerateColumns="True" 的 DataGrid 时,为什么会忽略 DataAnnotations 的相关文章

随机推荐

  • AmazonRDSEnhancedMonitoringRole 的 Cloudformation 模板

    我正在尝试通过 Cloudformation 模板启动 RDS 堆栈 我想在我的数据库实例上启用增强监控 为了做到这一点 MonitoringRoleArn必须在资源上指定属性 据我了解 这个 ARN 应该指向一个 IAM 服务角色 该角色
  • python urllib2 urlopen 响应

    python urllib2 urlopen 响应
  • 在 eclipse RCP 中安装新插件/功能后,是否有任何方法可以自动从磁盘中清除旧插件/功能?

    我正在构建一个 RCP 应用程序 每个季度都会更新功能 插件 因此 如果用户选择自动更新功能 插件 则将下载更新插件的新 jar 但旧插件仍在使用我不再使用的磁盘空间 我厌倦了删除包含旧 jar 信息的安装历史记录 当我尝试删除它时 它向我
  • 我们什么时候应该使用 RxJS tap 运算符?

    我不明白从the docs https rxjs dev firebaseapp com api operators tap 有人能给我解释一下吗 大多数操作符都按流顺序工作 例如 source pipe map a string gt c
  • 如何将支持的操作系统添加到 Windows 单击一次应用程序清单中?

    我正在尝试将supportedOS标签添加到单击一次应用程序清单中 对于常规应用程序执行此操作的常用方法是将 app manifest 文件添加到包含supportedOS 标记的项目中 如下所示 我删除了自动生成的单击一次清单中已包含的所
  • 在 Swift 中将两字节 UInt8 数组转换为 UInt16

    使用 Swift 我想将 uint8 t 数组中的字节转换为整数 C 示例 char bytes 2 0x01 0x02 NSData data NSData dataWithBytes bytes length 2 NSLog data
  • Vue.js 从 webpack 包中排除文件夹

    我陷入了一个关于 webpack 的非常简单的问题 我有一个使用 vue cli 创建的简单 Vue js 应用程序 我创建了文件夹public Reports我想从捆绑包中排除它 该文件夹包含子文件夹和 PDF 我的项目结构是标准的 di
  • 从边框外部绝对定位

    当我将元素绝对定位在相对元素内时 坐标是从容器的边缘计算的 而不考虑边框 相当于从边框的内侧定位 除了从边框的外侧定位元素之外 还有什么方法可以定位元素吗 例如 如果我有一个没有边框的红色方块 如第一个 则文本会粘在容器的左上角 因为它有t
  • PHP PHAR 归档的优点

    PHP 5 3 有一个新功能称为PHAR如同JAR在JAVA中 它基本上是 PHP 文件的存档 它的优点是什么 我不明白它们在网络场景中有何帮助 除 易于部署 之外的任何其他用途 只需复制一个文件即可部署整个应用程序 开源项目有巨大的好处
  • 从 JavaScript 字符串中去除 U+10000-U+10FFFF

    Tried string replace u10000 u10FFFF g 但可悲的是 u不支持10000 要指定超出 U FFFF 的代码点 您需要查找UTF 16 代理对 https en wikipedia org wiki UTF
  • 放大黑线的阈值

    给定一张图像 如下图所示 我需要将其转换为二进制图像 仅限黑白像素 这听起来很简单 我尝试过两个阈值函数 问题是我无法使用这些函数中的任何一个来获得完美的边缘 任何帮助将不胜感激 我尝试过的过滤器是 RGB 和 HSV 空间中的欧几里得距离
  • 在 C++ 中写入相同值的竞争条件?

    当操作写入单个常量值时 代码中存在竞争条件是否存在任何问题 例如 如果有一个并行循环填充了seen另一个数组中的每个值的数组arr 假设索引越界没有问题 关键部分可能是以下代码 parallel body with index i int
  • mongodb查询嵌套结构

    如何查询此嵌套 json 结构以查找包含 A 的文档 categories id 12 values A B C id 17 values D E F 到目前为止 我只能通过以下方式获取 id 值 db coll find categori
  • 有没有办法专注于 Angular 4/Ionic 3 上动态创建的表单?

    I have a page with dynamically created forms like this The blank spaces are inputs and the entire row is a button Is the
  • 如何在H2中创建新数据库?

    我有一个在 MySQL 上本地运行的站点 我想在 H2 数据库上运行它 我刚刚在浏览器上运行了控制台的 h2 jar 文件 但每当我登录时我都会看到该列表jdbc h2 var www mysite data db MODE MySQL i
  • Kubernetes 上的 Npgsql 和 Pgbouncer - 池化和 keepalives

    我正在寻找更详细的指导 其他人在 Pgbouncer 的生产中使用 Npgsql 的经验 基本上 我们使用 GKE 和 Google Cloud SQL 进行了以下设置 现在 我已经使用本地连接池配置了 npgsql 就好像 pgbounc
  • 如何使用 CSS 并排浮动 3 个 div?

    我知道如何让 2 个 div 并排浮动 只需将一个向左浮动 另一个向右浮动即可 但是如何使用 3 个 div 来做到这一点 或者我应该仅使用表格来实现此目的 只需给它们一个宽度并float left 这是一个例子 div style wid
  • 有没有办法限制ggplot2中的vline长度

    我试图使用 ggplot vline 和 hline 在线图上显示截距 但希望线条在图上的截距点处停止 在 ggplot 中这可能吗还是有其他解决方案 library ggplot2 pshare lt data frame for i i
  • 如何在 C# 中将复杂对象作为结构进行比较以进行单元测试

    我遇到了以下问题 目前我正在使用 TDD 重构我的项目 有一个已存在的域 我无法更改 代码示例 public class Product IEquatable
  • 使用带有 AutoGenerateColumns="True" 的 DataGrid 时,为什么会忽略 DataAnnotations

    我正在使用 WPF DataGrid 绑定到自定义类的集合 在网格 XAML 中使用 AutoGenerateColumns True 可以很好地创建和填充网格 但正如人们所期望的那样 标题是属性名称 我尝试指定