更改 DataGrid 列标题文本

Posted

技术标签:

【中文标题】更改 DataGrid 列标题文本【英文标题】:Change DataGrid column header text 【发布时间】:2015-02-12 12:45:38 【问题描述】:

我有一个特定类类型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”。如何将其更改为:“First Name”和“Last Name”?

【问题讨论】:

不自​​动生成列。手动创建它们。检查this链接 【参考方案1】:

你可以设置:

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

【讨论】:

【参考方案2】:

这是正确的做法:

首先在代码隐藏中定义一个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;

    



【讨论】:

定义一个新的作为属性,并使用旧的实例化它:ListPersons=new ObservableCollection(yourOldLis)【参考方案3】:

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

【讨论】:

【参考方案4】:

试试这个,

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

【讨论】:

【参考方案5】:

试试 HeaderText 而不是像这样的 Header:

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

【讨论】:

请注意,我在另一个页面中找到了这个,但您必须确保在绑定数据之前设置标题。【参考方案6】:
myDataGrid.Columns[0].Header="First Name";    
myDataGrid.Columns[1].Header="Last Name";

所有这些都对我有用,但您必须在加载数据网格后放置代码

【讨论】:

已经很久了,我想我什至不记得 C#... (jk)。不过说真的,@apomene 已经回答了这个问题。

以上是关于更改 DataGrid 列标题文本的主要内容,如果未能解决你的问题,请参考以下文章

如何根据用户输入更改 DataGrid 前景色?

更改 TextBox 文本时自动更改 DataGrid 中的数据(Xml 源)

动态设置 dojox.grid.datagrid 标题列宽

您可以在自动排序DataGrid中更改列的初始排序方向吗?

Flex:当自定义 itemrenderers 中的文本更改时,强制重绘 DataGrid

Flex DataGrid 标题列分隔符