更改 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";
它们都对我有用,但你必须在数据网格加载后放置代码
我有一个特定 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";
它们都对我有用,但你必须在数据网格加载后放置代码