2015-02-12 17 views
5

Tôi có danh sách một loại lớp cụ thể Person và tôi muốn tạo một DataGrid với nó.Thay đổi văn bản tiêu đề cột 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 lớp:

class Person { 
    string fName, lName; 
} 

Sau khi tất cả điều này tôi nhận được một bảng với tiêu đề: "fname" và "LName". Làm thế nào tôi có thể thay đổi điều đó thành: "First Name" và "Last Name"?

+0

Không tự động tạo ra các cột. Tạo chúng theo cách thủ công. Kiểm tra liên kết [this] (http://www.wpftutorial.net/datagrid.html) – dkozl

Trả lời

5

Đây đúng cách để làm điều đó:

Đầu tiên Xác định một ObservableCollection trong codebehind rằng sẽ tổ chức một danh sách những người

Second Bind liệt kê vào DataGridItemSource và Liên kết các thuộc tính của nó

Bạn có thể thay đổi tên hiển thị trên mỗi cột bằng cách tắt AutoGenerateColumns và thiết lập tên của họ bằng cách tự

của bạn ở đây đầy đủ mã

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

và mã đằng sau:

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

Nhưng nếu tôi đã có danh sách người được xác định thì sao? – AnDrOiD

+1

xác định một tài sản mới làm tài sản và sử dụng tài khoản cũ để khởi tạo: ListPersons = new ObservableCollection (yourOldLis) – Usama

10

bạn có thể đặt:

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

dường như không hoạt động – AnDrOiD

0

nếu bạn sử dụng sql để lấy dữ liệu, tôi có nghĩa là không sử dụng khuôn khổ thực thể, bạn có thể sử dụng một bí danh cho các cột của bạn.

1

Hãy thử điều này,

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

dường như không hoạt động – AnDrOiD

0

Hãy thử HeaderText thay vì Tiêu đề như thế này:

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

tất cả họ làm việc cho tôi nhưng bạn phải đặt mã sau DataGrid nạp

+0

Đã quá lâu đến nỗi tôi không nghĩ mình còn nhớ C#. .. (jk). Nghiêm túc, @apomene đã trả lời câu hỏi này. – AnDrOiD

Các vấn đề liên quan