Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Actualización: noviembre 2007
En este ejemplo se muestra cómo convertir el contenido de un objeto ListBoxItem en una instancia de Thickness. Aunque en este ejemplo se muestra específicamente cómo convertir un objeto ListBoxItem en una instancia de Thickness, también muestra cómo utilizar cualquier convertidor de tipos compatible para convertir un objeto ListBoxItem.
Ejemplo
En el ejemplo siguiente se crea un elemento ListBox que tiene diez objetos ListBoxItem seleccionables. El evento SelectionChanged desencadena el método personalizado ChangeMargin, que se define en el ejemplo de código subsiguiente.
En el ejemplo de código de Lenguaje de marcado de aplicaciones extensible (XAML), cada elemento ListBoxItem representa un valor de Thickness, que se utiliza para describir los márgenes uniformes de un elemento. Sin embargo, para poder utilizar una clase ListBoxItem que represente una instancia de Thickness, debe convertirla primero al tipo de datos correcto. En el ejemplo de código subsiguiente se muestra la conversión.
<ListBox Grid.Row="0" Grid.Column="1"
Width="50" Height="50"
VerticalAlignment="Top"
SelectionChanged="ChangeMargin">
<ListBoxItem>10</ListBoxItem>
<ListBoxItem>20</ListBoxItem>
<ListBoxItem>30</ListBoxItem>
<ListBoxItem>40</ListBoxItem>
<ListBoxItem>50</ListBoxItem>
<ListBoxItem>60</ListBoxItem>
<ListBoxItem>70</ListBoxItem>
<ListBoxItem>80</ListBoxItem>
<ListBoxItem>90</ListBoxItem>
<ListBoxItem>100</ListBoxItem>
</ListBox>
Cuando un usuario cambia la selección de ListBox, el cambio invoca el controlador de eventos ChangeMargin. Este método pasa ListBoxItem a un objeto ThicknessConverter, que convierte la propiedad Content del objeto ListBoxItem en una instancia de Thickness. (Observe que el valor de Content ya se ha convertido en una cadena mediante el método ToString.) A continuación, el valor se establece en la propiedad Margin del objeto text1.
Private Sub ChangeMargin(ByVal sender As Object, ByVal args As SelectionChangedEventArgs)
Dim li As ListBoxItem = CType(CType(sender, ListBox).SelectedItem, ListBoxItem)
Dim myThicknessConverter As ThicknessConverter = New ThicknessConverter()
Dim th1 As Thickness = CType(myThicknessConverter.ConvertFromString(li.Content.ToString()), Thickness)
text1.Margin = th1
Dim st1 As String = CType(myThicknessConverter.ConvertToString(text1.Margin), String)
gridVal.Text = "The Margin property is set to " + st1 + "."
End Sub
private void ChangeMargin(object sender, SelectionChangedEventArgs args)
{
ListBoxItem li = ((sender as ListBox).SelectedItem as ListBoxItem);
ThicknessConverter myThicknessConverter = new ThicknessConverter();
Thickness th1 = (Thickness)myThicknessConverter.ConvertFromString(li.Content.ToString());
text1.Margin = th1;
String st1 = (String)myThicknessConverter.ConvertToString(text1.Margin);
gridVal.Text = "The Margin property is set to " + st1 +".";
}
Para obtener el ejemplo completo, vea Ejemplo Changing Margins in a Grid.
Vea también
Tareas
Cómo: Cambiar la propiedad Margin
Cómo: Utilizar un objeto ThicknessConverter