Procedura: convertire un oggetto ListBoxItem in un nuovo tipo di dati
Aggiornamento: novembre 2007
In questo esempio viene illustrato come convertire il contenuto di un oggetto ListBoxItem in un'istanza di Thickness. Anche se in questo esempio viene illustrato specificamente come convertire un oggetto ListBoxItem in un'istanza di Thickness, viene anche illustrato come è possibile utilizzare un convertitore di tipi compatibile per convertire un oggetto ListBoxItem.
Esempio
Nell'esempio seguente viene creato un elemento ListBox che include dieci oggetti ListBoxItem selezionabili. L'evento SelectionChanged attiva il metodo personalizzato ChangeMargin, definito nell'esempio di codice successivo.
Nell'esempio di Extensible Application Markup Language (XAML) ogni oggetto ListBoxItem rappresenta un valore Thickness, utilizzato per descrivere i margini uniformi di un elemento. Tuttavia, prima di poter utilizzare un oggetto ListBoxItem per rappresentare un'istanza di Thickness, è necessario convertirlo nel tipo di dati corretto. Nell'esempio di codice successivo viene illustrata la conversione.
<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>
Quando un utente modifica la selezione ListBox, viene richiamato ChangeMargin del gestore eventi. Questo metodo passa ListBoxItem a un oggetto ThicknessConverter, che converte la proprietà Content di ListBoxItem in un'istanza di Thickness. Si noti che il valore di Content è già stato convertito in una stringa utilizzando il metodo ToString. Questo valore viene quindi impostato su Margin dell'oggetto text1.
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 +".";
}
Per l'esempio completo, vedere Esempio di modifica dei margini di una griglia.
Vedere anche
Attività
Procedura: modificare la proprietà Margin
Procedura: utilizzare un oggetto ThicknessConverter