【问题标题】:Change DataGrid column header text更改 DataGrid 列标题文本
【发布时间】: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链接

标签: c# wpf datagrid


【解决方案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 已经回答了这个问题。
        猜你喜欢
        • 1970-01-01
        • 2011-12-16
        • 2021-02-11
        • 2018-03-20
        • 1970-01-01
        • 2014-02-01
        • 2011-01-21
        • 1970-01-01
        • 2012-10-12
        相关资源
        最近更新 更多