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.

miércoles, 26 de octubre de 2011

Cuadro de mensaje para preguntar al usuario

    En ciertos casos es necesario mostrar una mensaje de pregunta al usuario para realizar un determinado proceso o calculo. Para hacer esto dentro de LightSwitch se puede utilizar el siguiente código:

this.Details.Dispatcher.BeginInvoke(() =>
{
    if (Microsoft.LightSwitch.Presentation.Extensions.ScreenExtensions.ShowMessageBox(this,
      "Debe guardar los cambios antes de generar el documento. ¿Desea guardarlos ahora?", 
      "Pregunta", MessageBoxOption.YesNo) == System.Windows.MessageBoxResult.Yes)
    {
        // Tarea a realizar
    }
});

El resultado es el siguiente:

viernes, 21 de octubre de 2011

Presentación en Sydney

    Recientemente fue la presentación en Sydney de Microsoft Visual Studio LightSwitch. Para ello realizaron un espectáculo con las luces de edificios fantástico. Aquí os dejo el vídeo para que lo veáis: