WPF DataGrid - 我可以使用属性装饰 POCO 以获得自定义列名称吗?

2023-12-04

我在 WPF 中有一个 DataGrid 并用如下数据填充它:

public enum Sharing
{
    Equal,
    SurfaceBased,
}

public class Data
{
    public bool Active { get; set; }
    public string Name { get; set; }
    public int Floor { get; set; }
    public Sharing Sharing { get; set; }
}
    public ObservableCollection<Data> _col = new ObservableCollection<Data>()
                                 {
                                  new Data(){Active = true, Name = "KRL", Floor = 0 },
                                  new Data(){Name = "DAT", Floor = 1},
                                  new Data(){Name = "TRE", Floor = 1},
                                  new Data(){Name = "DUO", Floor = 2},
                                 };

    public MainWindow()
    {
        InitializeComponent();

        grid.AutoGenerateColumns = true;
        grid.DataContext = _col;
        grid.ItemsSource = _col;
    }

我想知道是否可以在枚举和 POCO 类上使用一些属性,以便 DataGrid 在标题和 ComboCoxes 上显示它们(而不是变量名称)。

像这样的东西:

public enum Sharing
{
    [Name("This is a test")]
    Equal,
    [Name("This is a test 2")]
    SurfaceBased,
}

这可能吗?


好的。这是对标题执行此操作的方法:

您添加属性,例如Description您的属性的属性。

public class MyPOCO
{
    [Description("The amount you must pay")]
    public float Amount { get; set; }
}

然后,在从 DataGrid 派生的类中执行以下操作:

    protected override void OnAutoGeneratingColumn(DataGridAutoGeneratingColumnEventArgs e)
    {
        try
        {
            base.OnAutoGeneratingColumn(e);
            var propDescr = e.PropertyDescriptor as System.ComponentModel.PropertyDescriptor;
            e.Column.Header = propDescr.Description;
        }
        catch (Exception ex)
        {
            Utils.ReportException(ex);
        }
    }

为了向枚举成员添加自定义名称,您需要创建一个自定义列。您可以在这里看到一个简单的示例:https://stackoverflow.com/a/17510660/964053.

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

WPF DataGrid - 我可以使用属性装饰 POCO 以获得自定义列名称吗? 的相关文章

随机推荐

  • XSLT 2.0 通过多阶段转换在 HTML 输出中创建增量脚注编号

    这个问题建立在我对我的回答的基础上原问题 有人建议我发布后续内容 这涉及到尝试集成上一篇文章中的 XSL 代码 在上一个问题中 我提出了 TEI XML 文档的简化版本 我正在使用 XSLT 2 0 将其转换为 HTML 完整的 tei 文
  • 如何计算体素大小?

    提供了 DICOM 标头中的以下信息 如何计算体素大小的第三个值 我假设前两个值为 0 515625 和 0 515625 BitsAllocated 16 BitsStored 12 Columns 512 HighBit 11 Imag
  • 为什么 scanf 在提供 double 时返回 0.000000?

    我有以下汇编代码 为 Linux 上的 NASM 编写 This code has been generated by the 7Basic compiler
  • Python - 将日期时间参数传递到 SQL 命令中

    我正在尝试用Python做这样的事情 SQLCommand Delete From s where Date gt s and Date lt s calendar table name required starting date req
  • 使用 ruby​​ 和 active_record 保存时出现弃用警告

    我是 ruby 新手 正在编写一个需要将消息写入数据库日志的小脚本 我使用 ruby 1 9 3 和 active record 但没有 Rails 所有选择语句都工作正常 但我的写入日志函数返回以下错误 DEPRECATION WARNI
  • Python - 时间数据与格式不匹配

    我有以下格式的字符串时间 2016 12 10T13 54 15 294 我使用以下方法来格式化时间 time strptime ts b d H M S Y 这会引发错误 time data did not match format da
  • 使用 shell 变量查找具有多个文件名的 -name

    我有一个find命令查找名称与提到的多个模式匹配的文件 name范围 find L name SystemOut log o name out o name log o name javacore 这可以在命令行成功找到所需的文件 我正在寻
  • 如何管理 DOM 元素

    我已经实现了无限滚动 即当滚动条到达 div 底部时加载记录 它工作正常 但在页面上加载太多记录后 页面变得太重并导致渲染缓慢 实际上 我正在使用这种技术来替代 gridview 那么在这种情况下我如何管理繁重的 DOM 将 DOM 元素减
  • 使用带有 execve 的新路径来运行 ls 命令

    我正在尝试使用 execve 运行 ls 命令 目前我正在使用以下参数运行它 execve args 0 args env args args looks like ls l a NULL env args looks like PATH
  • 检查文件是否已保存到磁盘?

    我正在从服务器下载文件 将它们保存到设备 然后在我的应用程序中向用户显示它们 我想执行检查以查看该文件是否已存在于设备上 以便我们可以跳过下载并仅显示 但我无法找出执行此操作的最佳方法 我为每个文件创建一个唯一的文件名 然后将其转换为 NS
  • 如何使用 DataTable.Select() 解决文件管理器值中的单引号问题

    假设我想要productCode下面的变量被分配名为产品的产品代码Cookie s 注意其中的 ProductName因为它是导致下面的语句失败的原因 基本上 过滤表达式中的 会导致错误的 SQL 语法 我将不胜感激你们的任何想法 Data
  • 如何在 Zend Framework 2 中将数据库适配器设置为 Validator RecordExists

    我正在尝试将验证器 RecordExists 添加到我的表单中 但收到错误 不存在数据库适配器 如何将数据库适配器设置为此验证器 我使用骨架应用程序中的示例 我正在尝试执行类似的操作 是的 我知道 dbAdapter 未定义 我正在搜索如何
  • 无法手动将签名的 apk 安装到设备,出现错误“应用程序未安装”

    我想将我的应用程序发布到 GooglePlay 但首先我想使用签名的 apk 进行最后一次测试 以确保所有使用的 API 密钥都能在发布版本 GMaps Facebook 等 中正常工作 所以我只是使用我们的发布密钥制作了我的应用程序的签名
  • 获取全球ip地址

    我怎样才能得到 在C 中 global我的电脑的IP地址 Windows XP 你不能 您可以确定各个接口上的 IP 地址 并且可能有多个 这些可能是局域网 IP 10 0 0 0 8 192 168 0 0 16 等 也可能是 Inter
  • 如何使用 FFmpeg hstack 过滤器合成 2 个视频?

    我想通过并排将 2 个视频合成为 1 个视频 我还希望为每个视频设置开始 停止时间 最终视频应为 H264 AAC 编解码器和 mp4 格式 我附上了示例视频 https www dropbox com s e5eouyrrqsy44ts
  • iPhone X 中的导航栏问题? [复制]

    这个问题在这里已经有答案了 当我在 iPhone X 中运行该项目时 导航栏上方出现黑色空间 如图所示 但颜色没有相同 怎么解决这个问题呢 我想您没有使用故事板作为启动屏幕 有两个选项可以解决此问题 使用故事板作为启动屏幕 如果您使用启动图
  • 如何更新 Bitnami 堆栈中的 GitLab

    我在尝试BitNami GitLab 堆栈5 1 0 2 当我这样做的时候5 1 0 3被释放了 如何更新 Bitnami 堆栈中的 GitLab 相关带 LDAP 的 BitNami GitLab Stack 5 1 0 2 看这个 ht
  • 当我复制 laravel 项目并显示最后一个视图时出错

    我有一个 Laravel 5 3 项目 它是 5 个月前创建的 今天我复制了该项目 并对代码做了一些更改 当我编辑 Blade php 文件中的视图时 我编辑的项目向我显示了最后一个项目视图 我在新的 Laravel 项目中创建了一条新路线
  • 单击工具栏上的汉堡包图标不会打开导航抽屉

    我有这个导航抽屉工作得很好 重构我的代码我删除了所有onOptionsItemSelecteds在活动中并使所有活动继承自扩展的基本活动AppComplatActivity and 实施所有必要的方法 在此之后 即使我有 单击汉堡包图标也不
  • WPF DataGrid - 我可以使用属性装饰 POCO 以获得自定义列名称吗?

    我在 WPF 中有一个 DataGrid 并用如下数据填充它 public enum Sharing Equal SurfaceBased public class Data public bool Active get set publi