Procedura: ottenere o impostare le proprietà di posizionamento delle aree di disegno

In questo esempio viene illustrato come utilizzare i metodi di posizionamento dell'elemento per posizionare il Canvas contenuto figlio. In questo esempio viene utilizzato il contenuto di un oggetto ListBoxItem per rappresentare i valori di posizionamento e i valori vengono convertiti in istanze di Double, che è un argomento obbligatorio per il posizionamento. I valori vengono quindi convertiti nuovamente in stringhe e visualizzati come testo in un TextBlock elemento usando il GetLeft metodo .

Esempio

Nell'esempio seguente viene creato un ListBox elemento con undici elementi selezionabili ListBoxItem . L'evento SelectionChanged attiva il ChangeLeft metodo personalizzato, definito dal blocco di codice successivo.

Ognuno ListBoxItem rappresenta un Double valore, che è uno degli argomenti accettati dal SetLeft metodo di Canvas . Per usare un ListBoxItem oggetto per rappresentare un'istanza di , è prima necessario convertire l'oggetto ListBoxItem nel tipo di Doubledati corretto.

<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>

Quando un utente modifica la ListBox selezione, richiama il ChangeLeft metodo personalizzato. Questo metodo passa l'oggetto ListBoxItem a un LengthConverter oggetto , che converte l'oggetto Content di in ListBoxItem un'istanza di Double ( si noti che questo valore è già stato convertito in un String oggetto utilizzando il ToString metodo ). Questo valore viene quindi passato di nuovo ai SetLeft metodi e GetLeft di Canvas per modificare la posizione dell'oggetto text1 .

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;
}
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

Vedi anche