lunes, 31 de octubre de 2011

Acceso total al DataGrid desde código

El grid que se utiliza en LightSwitch no es más que el control DataGrid estandard de Silverlight limitado. Cambiando las propiedades en diseño normalmente es suficiente para un uso cotidiano, pero a veces puede ser necesario cambiar propiedades del grid que no son accesibles directamente de LightSwitch como por ejemplo habilitar unas columnas específicas o poner todo el grid en modo solo lectura.

Para ello tenemos que hacer una serie de pasos y obtener acceso al objeto DataGrid de Silverlight del cual hereda nuestro grid. Los pasos serían los siguientes:

  • Antes de empezar tenemos que agregar las referencias a "System.Windows.Controls.Data" y "System.Windows.Data" al proyecto "Client". Para ello nos vamos a la vista de ficheros (File View): 


  • Ponemos el siguiente código en el evento Created de la pantalla (debe funcionar también en InitializeDataWorkspace) para que capturemos cuando el control este disponible: 
partial void doc_salidaMto_Created()
{ 
    this.FindControl("linea_doc_salgrid").ControlAvailable += new EventHandler<ControlAvailableEventArgs>(linea_doc_salgrid_ControlAvailable); 
}


  • Ahora podemos acceder al object e.Control que nos dará el acceso que buscamos:
private void linea_doc_salgrid_ControlAvailable(object sender, ControlAvailableEventArgs e)
{
    DataGrid dataGrid = (DataGrid)e.Control;
    // Hacemos lo que queremos con el grid
    dataGrid.IsReadOnly = true;
}

Ya está todo, espero que os sea útil.

No hay comentarios:

Publicar un comentario