I used the AutoGeneratingColumn event and attribute to set the column names.
First create an attribute class ...
public class ColumnNameAttribute : System.Attribute
{
public ColumnNameAttribute(string Name) { this.Name = Name; }
public string Name { get; set; }
}
Then I decorate my data class members with a new attribute ...
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;
. , ( ).

, , , . , , .