Silverlight 4 Nuevas Características – StringFormat DataBinding

El Databinding de esta nueva versión se parece cada vez mas al databinding de WPF siendo cada vez mas potente. En las versiones anteriores vimos que si queríamos formatear una fecha o un decimal debíamos utilizar converters de los que ya hable en este post. En esta versión se ha implementado la propiedad StringFormat en los Binding.

Imaginemos que tenemos la clase Persona

 

   1:   public class Persona
   2:      {
   3:          public string Nombre { get; set; }
   4:          public string Apellidos { get; set; }
   5:          public DateTime FechaNacimiento { get; set; }
   6:          public string CorreoElectronico { get; set; }
   7:          public string Direccion { get; set; }
   8:      }

Ahora el Xaml en el que mostramos los datos sería

 

   1:  <Grid x:Name="LayoutRoot" Background="White" Height="160" VerticalAlignment="Top" Width="320">
   2:          <Grid.ColumnDefinitions>
   3:              <ColumnDefinition></ColumnDefinition>
   4:              <ColumnDefinition></ColumnDefinition>
   5:          </Grid.ColumnDefinitions>
   6:          <Grid.RowDefinitions>
   7:              <RowDefinition></RowDefinition>
   8:              <RowDefinition></RowDefinition>
   9:              <RowDefinition></RowDefinition>
  10:              <RowDefinition></RowDefinition>
  11:              <RowDefinition></RowDefinition>
  12:              <RowDefinition></RowDefinition>
  13:          </Grid.RowDefinitions>
  14:   
  15:          <TextBlock x:Name="FirstNameTextBlock" Grid.Row="0" Grid.Column="0"     Text="Nombre:" FontWeight="Bold">
  16:          </TextBlock>
  17:          <TextBlock x:Name="FirstNameValueTextBlock" Grid.Row="0" Grid.Column="1"     Text="{Binding Nombre}" ></TextBlock>
  18:          <TextBlock x:Name="LastNameTextBlock" Grid.Row="1" Grid.Column="0" Text="Apellidos:" FontWeight="Bold"></TextBlock>
  19:          <TextBlock x:Name="LastNameValueTextBlock" Grid.Row="1" Grid.Column="1" Text="{Binding Apellidos}"></TextBlock>
  20:          <TextBlock x:Name="AddressTextBlock" Grid.Row="3" Grid.Column="0"     Text="Direccion:" FontWeight="Bold"></TextBlock>
  21:          <TextBlock x:Name="AddressValueTextBlock" Grid.Row="3" Grid.Column="1"     Text="{Binding Direccion, TargetNullValue=Desconocida}" ></TextBlock>
  22:          <TextBlock x:Name="BirthDateTextBlock" Grid.Row="2"     Grid.Column="0" Text="Fecha Nacimiento:" FontWeight="Bold"></TextBlock>
  23:          <TextBlock x:Name="BirthDateValueTextBlock" Grid.Row="2" Grid.Column="1"     Text="{Binding FechaNacimiento, StringFormat=dd/MM/yyyy}"></TextBlock>
  24:          <TextBlock x:Name="EmailTextBlock" Grid.Row="4" Grid.Column="0" Text="Email:" FontWeight="Bold"></TextBlock>
  25:          <TextBlock x:Name="EmailValueTextBlock" Grid.Row="4" Grid.Column="1" Text="{Binding CorreoElectronico}"></TextBlock>
  26:      </Grid>

 

Si os fijáis en el Binding de Fecha Nacimiento podéis ver que la fecha tiene el formato  de dd/MM/yyyy evitándonos el converter, además también podeos ver en el binding de dirección que cuando sea nulo se muestre la palabra Desconocida

Solo nos queda el código c# para el binding

   1:   public MainPage()
   2:          {
   3:              InitializeComponent();
   4:              Persona p = new Persona
   5:                  {
   6:                      Nombre = "Oscar",
   7:                      Apellidos = "Alvarez Guerras",
   8:                      FechaNacimiento = new DateTime(1971, 6, 29),
   9:                      CorreoElectronico = "bialguos@gmail.com"
  10:                  };
  11:              DataContext = p;
  12:          }

 

El resultado

 

image

2 comentarios en “Silverlight 4 Nuevas Características – StringFormat DataBinding”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *