WPF DataGrid - 我可以用属性装饰我的 POCO 以具有自定义列名吗?

标签 wpf datagrid header

我在 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 在标题和 ComboCox 上显示它们(而不是变量名称)。

像这样:

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 .

关于WPF DataGrid - 我可以用属性装饰我的 POCO 以具有自定义列名吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17121934/

相关文章:

wpf - Prism/MEF : How to RegisterViewWithRegion Without Hard-Coding the Region Name

c# - 设计我的模型以绑定(bind)到 DataGrid 项目和标题

c# - 在数据网格中显示记录需要时间!

wpf - WPF DataGrid 中缺少边框线 (125%) 显示

html - <body> 和第一个 <div> 之间的神秘填充在向 <div> 添加边框时消失

wpf - WPF 和 MVC 是同一个概念吗?

c# - WPF如何在进度条上显示文字

c++ - 共享库的公共(public)或多个头文件

c - 包括头文件

wpf - 在 Outlook 中显示 WPF 窗口时的奇怪行为