更改 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如果您使用 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 列标题文本的主要内容,如果未能解决你的问题,请参考以下文章
更改 TextBox 文本时自动更改 DataGrid 中的数据(Xml 源)