[XAML] ValueConverters

¿Qué son?

Un ValueConverter es una clase que va a permitir la conversión de un tipo de dato a otro concreto para que un enlace a datos (Binding) lo entienda.

¿Cómo se crean?

.NET ya tiene incorporados distintos conversores para ahorrar el trabajo de los desarrolladores, pero puede darse el caso que se necesite crear uno propio.

Para poder definir un ValueConverter es necesario crear una nueva clase que implemente la Interfaz IValueConverter.

Esta interfaz expone para que podamos implementar la función de Conversión, y la función de deshacer:

– Convert

– ConvertBack

Ejemplo sencillo:

Un ejemplo de creación de un ValueConverter sería la transformación de un estado de un Expediente.

Vamos a situarnos, para definir los Estados de los expedientes tenemos los distintos valores en una Enumeración:

   1: public enum Estados

   2: {

   3:     Activo,

   4:     Pendiente,

   5:     Archivado,

   6:     Resuelto,

   7:     Inactivo

   8: }

Para que de un vistazo rápido por pantalla, el usuario pueda ver los distintos estados por colores, crearemos un Conversor de Estados a Colores:

   1: public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)

   2:         {

   3:             Estados es=(Estados)value;

   4:             switch(es)

   5:             {

   6:                 case Estados.Activo:

   7:                     return new SolidColorBrush(Colors.Green);

   8:                 case Estados.Inactivo:

   9:                     return new SolidColorBrush(Colors.Gray);

  10:                 case Estados.Pendiente:

  11:                     return new SolidColorBrush(Colors.Yellow);

  12:                 case Estados.Resuelto:

  13:                     return new SolidColorBrush(Colors.Blue);

  14:                 case Estados.Archivado:

  15:                     return new SolidColorBrush(Colors.LightBlue);

  16:             }

  17:             return new SolidColorBrush(Colors.White);

  18:         }

Bien para utilizar el ValueConverter en nuestro XAML, será necesario, que lo referenciemos e instanciemos en nuestro Control / Vista / Ventana…

   1: <Window x:Class="Converters.MainWindow"

   2:         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

   3:         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

   4:         xmlns:converters="clr-namespace:Converters"

   5:         Title="MainWindow" Height="350" Width="525">

   6:     <Window.Resources>

   7:         

   8:         <converters:EstadoAColorConverter x:Key="est"></converters:EstadoAColorConverter>

   9:     </Window.Resources>

 

Y después en el momento de realizar el Binding utilicemos la Propiedad Converter:

 

   1: <ListBox x:Name="listado" ItemsSource="{Binding}">

   2:             <ListBox.ItemTemplate>

   3:                 <DataTemplate>

   4:                     <Grid>

   5:                         <TextBlock Background="{Binding Estado, Converter={StaticResource est}}" Text="{Binding Nombre}"/>

   6:                     </Grid>

   7:                 </DataTemplate>

   8:             </ListBox.ItemTemplate>

   9:         </ListBox>

 

 

Espero que os sea de utilidad.!

Saludos

 

Beta 2 Driver Oracle para EF y LINQ

Consultando el apartado de .NET de la página de Oracle, he visto que han publicado la Beta 2 del Driver para trabajar contra Entity Framework y Linq To Entities.

¿Qué incluye esta versión?

– Soporte para el SP1 de VS 2010.

– Mejoras en el mapeo de los tipos de datos de Oracle.

– Corrección de algunos Bugs que podéis ver en el Release Notes

 

Desde Oracle indican que planean lanzar la versión final durante el último Cuarto de 2011. (Esperemos :D)

 

Podéis descargar esta beta desde aquí.

 

Saludos.