更改 DataGrid 列 header 文本

Change DataGrid column header text

我有一个特定 class 类型 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:

class Person {
    string fName, lName;
}

经过这一切,我得到了 table 和 headers:"fName" 和 "lName"。我怎样才能将其更改为:"First Name" 和 "Last Name"?

您可以设置:

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

如果您使用 sql 获取数据,我的意思是不要使用 entity framework 您可以为您的列使用别名。

这里是正确的方法:

首先 在代码隐藏中定义一个 ObservableCollection 来保存人员列表

Second 将该列表绑定到 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;

    }


}

试试这个,

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

像这样尝试使用 HeaderText 而不是 Header:

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

它们都对我有用,但你必须在数据网格加载后放置代码