2009-02-09 27 views
6

Có ai biết nếu nó có thể truy cập vào một cột DataGrid bằng cách sử dụng nó x: tên (như được định nghĩa trong xaml) từ bên trong mã phía sau?Có thể truy cập Cột dữ liệu Silverlight theo tên chứ không phải theo chỉ mục cột không?

Tôi biết tôi có thể sử dụng đoạn mã sau:

myDataGridList.Columns[0].Header = "Some Data"; 

..nhưng tôi muốn sử dụng một cái gì đó như thế này nếu có thể:

myDataGridList.Columns["ColumnName"].Header = "Some Data"; 

Cảm ơn trước.

Trả lời

13

Bạn có thể mở rộng ObservableCollection bằng một số LINQ hoặc vòng lặp foreach để thực hiện tìm kiếm tuyến tính trên các cột.

public static class MyExtensions 
{ 
    public static DataGridColumn GetByName(this ObservableCollection<DataGridColumn> col, string name) 
    { 
     return col.SingleOrDefault(p => 
      (string)p.GetValue(FrameworkElement.NameProperty) == name 
     ); 
    } 
} 

Sau đó, bạn có thể gọi đây là thay vì Cột tài sản:

myGrid.Columns.GetByName("theName"); 
+0

Cảm ơn rất nhiều - hoạt động hoàn hảo. – cyberbobcat

+0

Câu trả lời hay. Tôi đang tìm LINQ hữu ích ở rất nhiều nơi ... –

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