2009-02-09 19 views
6

¿Alguien sabe si es posible acceder a una columna de DataGrid utilizando su x: name (como se define en el xaml) desde el código subyacente?¿Es posible acceder a una columna de DataGrid de Silverlight por nombre y no por índice de columna?

Sé que puedo utilizar el siguiente código:

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

..pero yo preferiría usar algo como esto si es posible:

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

Gracias de antemano.

Respuesta

13

Puede ampliar ObservableCollection con algún linq o un bucle foreach para hacer una búsqueda lineal en las columnas.

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

A continuación, se puede llamar a este lugar de la propiedad Columnas:

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

Muchas gracias - funciona perfectamente. – cyberbobcat

+0

Buena respuesta. Estoy descubriendo que LINQ es útil en muchos lugares ... –

Cuestiones relacionadas