Compartir a través de


Cómo: Obtener o establecer propiedades de situación de Canvas

En este ejemplo se muestra cómo utilizar los métodos de posición del elemento Canvas para colocar el contenido secundario. En este ejemplo se utiliza el contenido de ListBoxItem para representar los valores de posición y se convierten los valores en instancias de Double, que es un argumento necesario para establecer la posición. A continuación, los valores se convierten de nuevo en cadenas y se muestran como texto en un elemento TextBlock mediante el método GetLeft.

Ejemplo

En el ejemplo siguiente se crea un elemento ListBox que tiene once elementos ListBoxItem seleccionables. El evento SelectionChanged desencadena el método personalizado ChangeLeft, que se define en el bloque de código subsiguiente.

Cada elemento ListBoxItem representa un valor Double, que es uno de los argumentos aceptados por el método SetLeft de Canvas. Para utilizar ListBoxItem a fin de representar una instancia de Double, antes debe convertir ListBoxItem al tipo de datos correcto.

<ListBox Grid.Column="1" Grid.Row="1" VerticalAlignment="Top" Width="60" Margin="10,0,0,0" SelectionChanged="ChangeLeft">
  <ListBoxItem>Auto</ListBoxItem>      
  <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>
<ListBox Grid.Column="1" Grid.Row="1" VerticalAlignment="Top" Width="60" Margin="10,0,0,0" SelectionChanged="ChangeLeft">
  <ListBoxItem>Auto</ListBoxItem>      
  <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, se invoca el método personalizado ChangeLeft. Este método pasa el elemento ListBoxItem a un objeto LengthConverter, que convierte la propiedad Content de ListBoxItem en una instancia de Double (observe que este valor ya se ha convertido al tipo String mediante el método ToString). A continuación, se devuelve este valor a los métodos SetLeft y GetLeft de Canvas para cambiar la posición del objeto text1.

Private Sub ChangeLeft(ByVal sender As Object, ByVal e As SelectionChangedEventArgs)
    Dim li As ListBoxItem = CType(CType(sender, ListBox).SelectedItem, ListBoxItem)
    Dim myLengthConverter As New LengthConverter
    Dim db1 As Double = CType(myLengthConverter.ConvertFromString(li.Content.ToString()), Double)
    Canvas.SetLeft(text1, db1)
    Dim st1 As String = CType(myLengthConverter.ConvertToString(Canvas.GetLeft(text1)), String)
    canvasLeft.Text = "Canvas.Left = " + st1
End Sub
        private void ChangeLeft(object sender, SelectionChangedEventArgs args)
        {
            ListBoxItem li = ((sender as ListBox).SelectedItem as ListBoxItem);
            LengthConverter myLengthConverter = new LengthConverter();
            Double db1 = (Double)myLengthConverter.ConvertFromString(li.Content.ToString());
            Canvas.SetLeft(text1, db1);
            String st1 = (String)myLengthConverter.ConvertToString(Canvas.GetLeft(text1));
            canvasLeft.Text = "Canvas.Left = " + st1;
        }

Vea también

Referencia

Canvas

ListBoxItem

LengthConverter

Conceptos

Información general sobre elementos Panel