gpt4 book ai didi

c# - 当 AutoGenerateColumns = True 时如何重命名 DataGrid 列?

转载 作者:可可西里 更新时间:2023-11-01 08:00:33 24 4
gpt4 key购买 nike

我有一个简单的数据结构类:

public class Client {
public String name {set; get;}
public String claim_number {set; get;}
}

我将其输入 DataGrid:

this.data_grid_clients.ItemSource = this.clients;

我想更改列标题。即:claim_number 到“ claim 编号”。我知道这可以在您通过执行以下操作手动创建列时完成:

this.data_grid_clients.Columns[0].Header = "Claim Number"

但是,Columns 属性在自动生成列时为空。有没有办法重命名列,还是我必须手动生成列?

最佳答案

您可以使用 DisplayNameAttribute并更新您的代码的某些部分以实现您想要的。

您要做的第一件事是,将 [DisplayName("")] 添加到 Client 类的属性中。

public class Client {
[DisplayName("Column Name 1")]
public String name {set; get;}

[DisplayName("Clain Number")]
public String claim_number {set; get;}
}

更新您的 xaml 代码,将事件处理程序添加到 AutoGenerationColumn 事件。

<dg:DataGrid AutoGenerateColumns="True" AutoGeneratingColumn="OnAutoGeneratingColumn">
</dg:DataGrid>

最后,向代码隐藏添加一个方法。

private void OnAutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
var displayName = GetPropertyDisplayName(e.PropertyDescriptor);

if (!string.IsNullOrEmpty(displayName))
{
e.Column.Header = displayName;
}

}

public static string GetPropertyDisplayName(object descriptor)
{
var pd = descriptor as PropertyDescriptor;

if (pd != null)
{
// Check for DisplayName attribute and set the column header accordingly
var displayName = pd.Attributes[typeof(DisplayNameAttribute)] as DisplayNameAttribute;

if (displayName != null && displayName != DisplayNameAttribute.Default)
{
return displayName.DisplayName;
}

}
else
{
var pi = descriptor as PropertyInfo;

if (pi != null)
{
// Check for DisplayName attribute and set the column header accordingly
Object[] attributes = pi.GetCustomAttributes(typeof(DisplayNameAttribute), true);
for (int i = 0; i < attributes.Length; ++i)
{
var displayName = attributes[i] as DisplayNameAttribute;
if (displayName != null && displayName != DisplayNameAttribute.Default)
{
return displayName.DisplayName;
}
}
}
}

return null;
}

关于c# - 当 AutoGenerateColumns = True 时如何重命名 DataGrid 列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13579034/

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