Freigeben über


Gewusst wie: Ändern der Margin-Eigenschaft

Aktualisiert: November 2007

In diesem Beispiel wird veranschaulicht, wie die Margin-Eigenschaft eines untergeordneten Elements geändert wird, das sich in einem Grid befindet. Im Beispiel werden Positionierungswerte als Inhalt in ListBoxItem dargestellt. Die Werte werden später in Instanzen von Thickness konvertiert. Dabei handelt es sich um einen erforderlichen Wert für Margin. Der Wert wird dann in eine Zeichenfolge zurückkonvertiert und als TextBlock angezeigt.

Beispiel

Im folgenden Beispiel wird ein ListBox-Element erstellt, das über zehn auswählbare Elemente verfügt. Das SelectionChanged-Ereignis löst die benutzerdefinierte ChangeMargin-Methode aus, die im nachfolgenden Codebeispiel definiert wird.

Im Extensible Application Markup Language (XAML)-Beispiel stellt jedes ListBoxItem einen Thickness-Wert dar, der zur Beschreibung der einheitlichen Ränder eines Elements dient. Bevor Sie jedoch ein ListBoxItem zur Darstellung einer Instanz von Thickness verwenden können, muss dieses zunächst in den richtigen Datentyp konvertiert werden. Die Konvertierung wird im folgenden Codebeispiel dargestellt.

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

Wenn ein Benutzer die ListBox-Auswahl ändert, wird durch diese Änderung die benutzerdefinierte ChangeMargin-Methode aufgerufen. Diese Methode übergibt das ListBoxItem an ein ThicknessConverter-Objekt. Dieses Objekt konvertiert ListBoxItem Content in eine Instanz von Thickness. (Beachten Sie, dass dieser Wert durch die ToString-Methode bereits in eine Zeichenfolge konvertiert wurde.) Dieser Wert wird dann als Margin des text1-Objekts zurückgegeben und ändert dessen Position dynamisch.

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 +".";
        }

Das vollständige Beispiel finden Sie unter Ändern von Rändern in einem Rasterbeispiel.

Siehe auch

Aufgaben

Gewusst wie: Konvertieren von einem ListBoxItem in einen neuen Datentyp

Gewusst wie: Verwenden eines ThicknessConverter-Objekts

Referenz

Grid

ThicknessConverter

Margin

ListBox