counter for tumblr
[SL] Maestro – Detalle y la propiedad IsSynchronizedWithCurrentItem - El blog de Javier Torrecilla

[SL] Maestro – Detalle y la propiedad IsSynchronizedWithCurrentItem

Introducción

Estoy dando mis primeros pasos en el mundo de WPF y Silverlight. Empece por WPF donde y ahora estoy intentando migrar los ejemplos que he creado en WPF a Silverlight y me he encontrado el siguiente problema:

“Establecer la propiedad IsSynchronizedWithCurrentItem a True provoca una excepción.”

En WPF este problema no sucede así que hable con el crack de SL (Josue Yeray) y vi la ayuda de MSDN, donde dicen:

Obtiene o establece un valor que indica si Selector debe mantener la propiedad SelectedItem sincronizada con el elemento actual en la propiedad Items.

Campo identificador de la propiedad de dependencia: IsSynchronizedWithCurrentItemProperty

Establecer la propiedad IsSynchronizedWithCurrentItem en true producirá una excepción.

Lo que pretendía conseguir es un Listbox y que en unas cajas de Texto mostrase el valor del elemento seleccionado.

Para conseguirlo en WPF podríamos utilizar un código como el siguiente:

   1: <ListBox x:Name="Productos" Grid.Row="1" Grid.Column="1" IsSynchronizedWithCurrentItem="True" 
   2:     ItemsSource="{Binding lProductos}">
   3:          <ListBox.ItemTemplate>
   4:              <DataTemplate>
   5:                  <Grid>
   6:                      <Grid.ColumnDefinitions>
   7:                          <ColumnDefinition/>
   8:                      </Grid.ColumnDefinitions>
   9:                      <Label Content="{Binding Path=Nombre}"/>
  10:                  </Grid>
  11:              </DataTemplate>
  12:          </ListBox.ItemTemplate>
  13:      </ListBox>
  14:      <StackPanel  Grid.Row="1" Grid.Column="2">
  15:          <Label Content="Producto"/>
  16:          <TextBlock Text="{Binding CurrentItem.Nombre}" Height="26" />
  17:          <Label Content="Unidades"/>
  18:          <TextBlock Text="{Binding CurrentItem.Unidades}" Height="26" />
  19:          <Label Content="Precio"/>
  20:          <TextBlock x:Name="txtPrecio" Text="{Binding CurrentItem.Precio}" Height="26" />
  21:      </StackPanel>

Solución para SilverLight

En vista de no poder utilizar la propiedad indicada, vamos a enlazar los Textos a la propiedad SelectedItem del ListBox:

   1: <ListBox   Grid.Column="0" x:Name="listadoActividades" ItemsSource="{Binding Actividades}">
   2:             <ListBox.ItemTemplate>
   3:                 <DataTemplate>
   4:                     <Grid>
   5:                         <Grid.RowDefinitions>
   6:                             <RowDefinition/>
   7:                         </Grid.RowDefinitions>
   8:                         <Grid.ColumnDefinitions>
   9:                             <ColumnDefinition/>
  10:                             <ColumnDefinition/>
  11:                             <ColumnDefinition/>
  12:                         </Grid.ColumnDefinitions>
  13:                         <TextBlock Grid.Column="0" Text="{Binding AC_Codi}"/>
  14:                         <TextBlock Grid.Column="1" Text="{Binding AC_Descripcion}"/>
  15:                         <TextBlock Grid.Column="2" Text="{Binding AC_Tipo}"/>
  16:                     </Grid>
  17:                 </DataTemplate>
  18:             </ListBox.ItemTemplate>            
  19:         </ListBox>
  20:         <StackPanel Grid.Column="1">
  21:             <TextBlock Text="Codigo"/>
  22:             <TextBox  Text="{Binding ElementName=listadoActividades, Path=SelectedItem.AC_Codi}" 
  23:             IsEnabled="False"/>
  24:             <TextBlock Text="Descripción"/>
  25:             <TextBox Text="{Binding ElementName=listadoActividades, 
  26:                             Path=SelectedItem.AC_Descripcion, Mode=TwoWay}"/>
  27:             <TextBlock Text="Tipo de Actividad"/>
  28:             <TextBox Text="{Binding ElementName=listadoActividades, 
  29:                             Path=SelectedItem.AC_Tipo, Mode=TwoWay}"/>
  30:         </StackPanel>

 

Bueno espero que os sea de utilidad.

 

Saludos.

Published 7/6/2011 8:05 por Javier Torrecilla
Archivado en: ,
Comparte este post: