更改DataGrid列标题文本

时间:2015-02-12 12:45:38

标签: c# wpf datagrid

我有一个特定班级类型Person的列表,我想用它制作一个DataGrid

private void DataGrid_Loaded(object sender, RoutedEventArgs e) {
    List<Person> x; //Don't worry, x has data in it
    (sender as DataGrid).ItemsSource = x;
}

Person类:

class Person {
    string fName, lName;
}

毕竟,我得到一个带有标题的表:“fName”和“lName”。如何将其更改为:“名字”和“姓氏”?

6 个答案:

答案 0 :(得分:13)

你可以设置:

 myDataGrid.Columns[0].Header="First Name";
 myDataGrid.Columns[1].Header="Last Name";

答案 1 :(得分:11)

这是正确的方法:

首先在代码隐藏中定义ObservableCollection,其中包含人员列表

第二次将该列表绑定到 DataGrid ItemSource 并绑定其属性

您只需禁用AutoGenerateColumns并自行设置姓名即可更改每列上显示的名称

这里是完整的代码

<DataGrid ItemsSource="{Binding ListPersons}" AutoGenerateColumns="False">
      <DataGrid.Columns >
            <DataGridTextColumn Header="First Name" Binding="{Binding FName}"></DataGridTextColumn>
            <DataGridTextColumn Header="Last Name" Binding="{Binding LName}"></DataGridTextColumn>
      </DataGrid.Columns>
  </DataGrid>

和背后的代码:

public class Person
{
    public String FName { get; set; }   
    public String LName { get; set; }   

}
public partial class MainWindow : Window
{
    public ObservableCollection<Person> ListPersons { get; set; }
    public MainWindow()
    {
        ListPersons=new ObservableCollection<Person>()
        {
            new Person()
            {
                FName = "FName1",
                LName = "LName1"
            },
             new Person()
            {
                FName = "FName2",
                LName = "LName2"
            }

        };
        this.DataContext = this;

    }


}

答案 2 :(得分:1)

试试这个,

(sender as DataGrid).Columns[0].Header="First Name";
(sender as DataGrid).Columns[1].Header="Last Name";

答案 3 :(得分:1)

尝试使用HeaderText代替Header:

  myDataGrid.Columns[0].HeaderText="First Name";
  myDataGrid.Columns[1].HeaderText="Last Name";

答案 4 :(得分:0)

如果您使用sql获取数据,我的意思是不要使用实体框架,您可以使用Alias作为列。

答案 5 :(得分:0)

myDataGrid.Columns[0].Header="First Name";    
myDataGrid.Columns[1].Header="Last Name";

所有这些都适合我,但你必须在datagrid加载后放入代码