IValueConverter Silverlight 5

28 de marzo de 2014

Buenas gente.

Hoy quiero hablarles un poquito de este recurso de Silverlight que de verdad me ha sacado de apuros en muchas ocasiones y que tanta funcionalidad le da a nuestras aplicaciones.

No pretendo hacer un tutorial, sino solo un pequeño comentario de lo mucho que IValueConverter puede hacer.

IValueConverter es una "Interfaz" que brinda la posibilidad de que podamos agregar cierta lógica (condiciones, decisiones) con los enlaces que hagamos, particularmente en Xaml.

Consiste básicamente en que cuando hagamos una "Binding" en nuestro Xaml, podamos antes de que se haga el render manipular el dato y regresar (Return) un valor de diferente tipo o formato.

Por ejemplo, si estamos enlazando el campo "sexo" a un TextBox, pero en nuestra base de datos nosotros guardamos 0 para hombre y 1 para mujer, entonces si dejamos el enlace tal cual, esos valores son los que mostrará, pero si lo enlazamos ademas con el converter, pues en la logica de este podemos decirle que haga un return de "H" cuando el valor pasado sea 0 y que regrese "M" cuando el valor sea 1, asi de sencillo.

En el XAML.

<TextBox Text="{Binding sexo, Converter={StaticResource sexoConv}}"/>

con esto hacemos el binding y ademas asignamos el converter "sexoConv"

En la Interface
 Public Class convertidorSexo
        Implements IValueConverter

        Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As CultureInfo) As Object Implements IValueConverter.Convert
            If value = 0 Then
                Return "H"
            Else
                Return "M"
            End If
        End Function

        Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As CultureInfo) As Object Implements IValueConverter.ConvertBack

        End Function
    End Class

En lo personal he utilizado esta interfaz para cambiar color de celdas, tamaño de fuentes, asignar una u otra imagen (Aplicaciones con semáforo),  cambiar color a la fila de un DataGrid en dependencia de un valor.

Bueno espero esto pueda dar una idea de lo que podemos lograr con la Interface IValueConverter.

Y ustedes en que circunstancias lo han usado?

Respaldar Información Windows sin extraer Disco Duro

25 de marzo de 2014

Saludos gente.

Hoy me llevaron una portátil Lenovo Z570, para cambiarle sistema operativa, windows 7 a windows 8.

Pues normalmente esto no tiene ningún inconveniente, como tantas veces hice un respaldo de la información que tenia en la unidad C y la pase a la unidad D.

Todo bien, luego me dispongo a formatear e instalar windows 8, elimino la partición del sistema anterior y formateo para seguir la instalación, pero en esto que me dice que el disco tiene una partición GPT y que para instalar windows 8 necesito convertir el sistema de arranque del disco, si recuerdan tengo mi respaldo en la otra mitad del disco duro, por lo que si hago el procedimiento de conversión pierdo todo, no tengo a mano un adaptador que me permita sacar el disco duro de la portatil y respaldar en otro disco, no tengo a mano un solo LiveCd que me permita arrancar y hacer el traspaso de la información, asi que "Que Hacer ??"

Un LiveCd anda por los 700 mb, con la conexión tan hermosa que tengo, tendría que esperar un día entero para descargarlo.

Así que la solución que se me vino a la mente es la siguiente:

[SOLUCION]
Arranco normal con el Dvd de win8, cuando me muestra las opciones presionamos Shift + f10, esto abre la consola de comandos, conecto mi disco duro externo, y a través de comando de DOS, realizo un Xcopy de la información de una unidad a otra y listo, con esto ya podré realizar la conversión de todo el disco duro sin problemas.

Algo que no se me olvidará más.

Espero a alguno pueda servirle.

Saludos.

Capturar combinación de Teclas (Silverlight)

20 de marzo de 2014

Buen día, hoy anotaré la forma de como capturar una combinación de teclas (Ctrl + Enter)

Para lograr esto tenemos que controlar el evento del KeyDown, en mi caso particular lo hago a un TextBox que es el único control que recibe el enfoque, ya que lo que estoy implementando es una especia de búsqueda y selección, por lo tanto cuando el usuario de ENTER se agregará el elemento seleccionado, y cuando de CTRL + ENTER se saldrá del formulario.

En C#

public void txtBuscar_KeyDown(KeyEventArgs e) 
 { 
   if (Keyboard.Modifiers == ModifierKeys.Control && e.Key == Key.ENTER) 
      { 
        OKButton_Click(Nothing, Nothing); 
      }
   else
      {
        if (e.Key == Key.ENTER)
          {
            agregarALista();
          }
      }
}

En VB

 Private Sub txtBuscar_KeyDown(sender As Object, e As KeyEventArgs)
        If Keyboard.Modifiers = ModifierKeys.Control And e.Key = Key.Enter Then
            OKButton_Click(Nothing, Nothing)
        Else
            If e.Key = Key.Enter Then
                agregarALista()
            End If
        End If
 End Sub

Básicamente detectamos si se presiono alguna tecla "modificadora" (SHIFT, CTRL, ALT) en este caso CTRL en combinación con otra tecla (ENTER)

Saludos.


Cantidad de Registros en un Datagrid

19 de marzo de 2014


Después de casi un año de no escribir nada por aqui, dejaré esta pequeña entrada, que será el inicio de muchos de los recordatorio de las cosas que voy descubriendo (Como hacerlas).

En está entrada será como saber la cantidad de registros que hay enlazados en un Datagrid, en Silverlight.

En C#

nombreDataGrid.ItemsSource.OfType<objeto>().Count();

En VB

nombreDataGrid.ItemsSource.OfType(of objeto).count()

Donde "nombreDataGrid" será obviamente el nombre de nuestro DataGrid
"objeto" será el tipo de dato (objeto) que estemos trabajando con el DataGrid


 Por ejemplo si en nuestro dataGrid mostramos una lista de Clientes (de la Clase Cliente).

sería:

clienteDataGrid.ItemsSource.OfType(Of cliente).count()

Bueno espero a más de alguno le salve la busqueda (seguramente a mi mismo en par de semanas)


Lenín Casco

Blog Informático