我有一个特定班级类型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”。如何将其更改为:“名字”和“姓氏”?
答案 0 :(得分:13)
你可以设置:
myDataGrid.Columns[0].Header="First Name";
myDataGrid.Columns[1].Header="Last Name";
答案 1 :(得分:11)
这是正确的方法:
首先在代码隐藏中定义ObservableCollection
,其中包含人员列表
第二次将该列表绑定到 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;
}
}
答案 2 :(得分:1)
试试这个,
(sender as DataGrid).Columns[0].Header="First Name";
(sender as DataGrid).Columns[1].Header="Last Name";
答案 3 :(得分:1)
尝试使用HeaderText代替Header:
myDataGrid.Columns[0].HeaderText="First Name";
myDataGrid.Columns[1].HeaderText="Last Name";
答案 4 :(得分:0)
如果您使用sql获取数据,我的意思是不要使用实体框架,您可以使用Alias作为列。
答案 5 :(得分:0)
myDataGrid.Columns[0].Header="First Name";
myDataGrid.Columns[1].Header="Last Name";
所有这些都适合我,但你必须在datagrid加载后放入代码