Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieses Beispiel veranschaulicht, wie die Positionierungsmethoden des Canvas-Elements zum Positionieren untergeordneter Inhalte verwendet werden. In diesem Beispiel dient der Inhalt eines ListBoxItem zur Darstellung von Positionierungswerten. Anschließend werden die Werte in Instanzen von Double konvertiert, bei dem es sich um ein für die Positionierung erforderliches Argument handelt. Die Werte werden anschließend erneut in Zeichenfolgen konvertiert und dann als Text in einem TextBlock-Element unter Verwendung der GetLeft-Methode angezeigt.
Beispiel
Im folgenden Beispiel wird ein ListBox-Element erstellt, das über elf auswählbare ListBoxItem-Elemente verfügt. Das SelectionChanged-Ereignis löst die benutzerdefinierte ChangeLeft-Methode aus, die im nachfolgenden Codeblock definiert wird.
Jedes ListBoxItem stellt einen Double-Wert dar. Hierbei handelt es sich um eins der Argumente, das von der SetLeft-Methode von Canvas akzeptiert wird. Um ein ListBoxItem zur Darstellung einer Instanz von Double zu verwenden, müssen Sie das ListBoxItem zuerst in den richtigen Datentyp konvertieren.
<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>
Wenn ein Benutzer die ListBox-Auswahl ändert, wird die benutzerdefinierte ChangeLeft-Methode aufgerufen. Diese Methode übergibt das ListBoxItem an ein LengthConverter-Objekt, das den Content eines ListBoxItem in eine Instanz von Double konvertiert (dieser Wert wurde bereits in den Typ String unter Verwendung der ToString-Methode konvertiert). Dieser Wert wird anschließend wieder an die SetLeft-Methode und die GetLeft-Methode von Canvas übergeben, um die Position des text1-Objekts zu ändern.
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;
}