Gewusst wie: Konvertieren von einem ListBoxItem in einen neuen Datentyp
Aktualisiert: November 2007
Dieses Beispiel veranschaulicht, wie der Inhalt von einem ListBoxItem-Elements in eine Instanz von Thickness konvertiert wird. Auch wenn in diesem Beispiel insbesondere die Konvertierung von einem ListBoxItem in eine Instanz von Thickness dargestellt wird, veranschaulicht es auch, wie Sie jeden kompatiblen Typkonverter zur Konvertierung von einem ListBoxItem verwenden können.
Beispiel
Im folgenden Beispiel wird ein ListBox-Element erstellt, in dem zehn ListBoxItem-Objekte auswählbar sind. 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 der Ereignishandler ChangeMargin aufgerufen. Durch diese Methode wird das ListBoxItem an ein ThicknessConverter-Objekt weitergeleitet, das die Content-Eigenschaft vom ListBoxItem in eine Instanz von Thickness konvertiert. (Beachten Sie, dass der Wert von Content durch die ToString-Methode bereits in eine Zeichenfolge konvertiert wurde.) Dieser Wert wird daraufhin auf den Margin-Wert des text1-Objekts festgelegt.
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: Ändern der Margin-Eigenschaft
Gewusst wie: Verwenden eines ThicknessConverter-Objekts