2015-02-12 27 views
5

Ich habe eine Liste einer bestimmten Klassenart Person und ich möchte damit eine DataGrid machen.Ändern DataGrid Spaltenüberschrift Text

private void DataGrid_Loaded(object sender, RoutedEventArgs e) { 
    List<Person> x; //Don't worry, x has data in it 
    (sender as DataGrid).ItemsSource = x; 
} 

Und die Person Klasse:

class Person { 
    string fName, lName; 
} 

Nach all dem bekomme ich eine Tabelle mit den Überschriften: "fName" und "lName". Wie kann ich das ändern zu: "Vorname" und "Nachname"?

+0

nicht automatisch Spalten erzeugen Sie geladen. Erstellen Sie sie manuell. Check [this] (http://www.wpftutorial.net/datagrid.html) – dkozl

Antwort

5

Hier ist der richtige Weg, es zu tun:

Erste ein ObservableCollection in dem Code-Behind definieren, die eine Liste von Personen

Zweiter binden, die zum DatagridItemSource Liste halten und binden Sie seine Eigenschaften

Sie können ändern, welcher Name für jede Spalte angezeigt wird, indem Sie einfach deaktivieren AutoGenerateColumns und ihre Namen Einstellung hinter von Ihrem Selbst

hier den vollständigen Code

<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> 

und den Code:

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; 

    } 


} 
+0

Aber was ist, wenn ich bereits eine definierte Liste von Personen habe? – AnDrOiD

+1

Definieren Sie eine neue als Eigenschaft, und verwenden Sie die alte, um es zu instanziieren: ListPersons = neue ObservableCollection (IhreOldLis) – Usama

10

können Sie einstellen:

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

scheint nicht zu funktionieren – AnDrOiD

0

Wenn Sie SQL für Abrufen von Daten verwenden, meine ich Sie ein Alias ​​für Ihre Spalten können nicht Entity Framework verwenden.

1

die Sie interessieren,

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

scheint nicht zu funktionieren – AnDrOiD

0

Header Versuchen statt Kopf so:

myDataGrid.Columns[0].HeaderText="First Name"; 
    myDataGrid.Columns[1].HeaderText="Last Name"; 
-1
myDataGrid.Columns[0].Header="First Name";  
myDataGrid.Columns[1].Header="Last Name"; 

alle sie für mich arbeiten, aber Sie haben den Code zu setzen, nachdem Datagrid

+0

Es ist so lange, dass ich glaube nicht, ich erinnere mich sogar an C#. .. (jk). Im Ernst, @apomene hat das schon beantwortet. – AnDrOiD

Verwandte Themen