gpt4 book ai didi

c# - WPF - 更改数据绑定(bind) DataGrid 上的列名

转载 作者:太空狗 更新时间:2023-10-29 23:56:58 25 4
gpt4 key购买 nike

基本上,我使用数据网格的 ItemSource 属性将通用列表绑定(bind)到我的数据网格。但是我真的很想更改标题,我尝试了以下操作但出现了运行时异常:

dgtest.Columns[1].Header = "edited";

最佳答案

我使用 AutoGeneratingColumn 事件和一个属性来设置我的列名。

首先创建一个属性类...

    public class ColumnNameAttribute : System.Attribute
{
public ColumnNameAttribute(string Name) { this.Name = Name; }
public string Name { get; set; }
}

然后我用新属性装饰我的数据类成员...

    public class Test
{
[ColumnName("User Name")]
public string Name { get; set; }
[ColumnName("User Id")]
public string UserID { get; set; }
}

然后我编写我的 AutoGeneratingColumn 事件处理程序...

    void dgPrimaryGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
var desc = e.PropertyDescriptor as PropertyDescriptor;
var att = desc.Attributes[typeof(ColumnNameAttribute)] as ColumnNameAttribute;
if(att != null)
{
e.Column.Header = att.Name;
}
}

...并将其附加到我的网格并测试...

        dgPrimaryGrid.AutoGeneratingColumn += dgPrimaryGrid_AutoGeneratingColumn;

var data = new object[]
{
new Test() { Name = "Joe", UserID = "1" }
};
dgPrimaryGrid.ItemsSource = data;

这是它的样子。请注意,列名不是属性名(默认行为)。

A DataGrid with Columns Renamed

这种方法需要多做一些工作,但是最好将列标题定义在与绑定(bind)列相同的位置。您可以重新排列您的列,而不必去其他地方修复列名。

关于c# - WPF - 更改数据绑定(bind) DataGrid 上的列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3451316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com