it-swarm.com.ru

Изменить текст заголовка столбца DataGrid

У меня есть список определенного типа класса 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». Как я могу изменить это на «Имя» и «Фамилия»?

6
AnDrOiD

Вот правильный способ сделать это:

Сначала Определите 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;

    }


}
10
SamTheDev

вы можете установить:

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

Попробуй это, 

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

если вы используете sql для получения данных, я имею в виду, что не используйте Entity Framework, вы можете использовать Alias ​​для своих столбцов.

0
Vecihi Baltacı

Попробуйте HeaderText вместо Header следующим образом: 

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