Procedura: creare e utilizzare un oggetto GridLengthConverter
Esempio
Nell'esempio riportato di seguito viene illustrato come creare e utilizzare un'istanza dell'oggetto GridLengthConverter. Nell'esempio viene definito un metodo personalizzato denominato changeCol che consente di passare ListBoxItem a un oggetto GridLengthConverter per convertire la proprietà Content di un oggetto ListBoxItem in un'istanza di GridLength. Il valore convertito viene quindi passato come valore della proprietà Width dell'elemento ColumnDefinition.
Nell'esempio viene inoltre definito un secondo metodo personalizzato, denominato changeColVal. Questo metodo personalizzato consente di convertire la proprietà Value di un oggetto Slider in un oggetto String e di passare tale valore all'oggetto ColumnDefinition come proprietà Width dell'elemento.
Si noti che un file Extensible Application Markup Language (XAML) separato consente di definire il contenuto di un oggetto ListBoxItem.
Private Sub changeColVal(ByVal sender As Object, ByVal args As RoutedPropertyChangedEventArgs(Of Double))
txt1.Text = "Current Grid Column is " + hs1.Value.ToString()
End Sub
Private Sub changeCol(ByVal sender As Object, ByVal args As SelectionChangedEventArgs)
Dim li1 As ListBoxItem = CType(CType(sender, ListBox).SelectedItem, ListBoxItem)
Dim myGridLengthConverter As System.Windows.GridLengthConverter = New System.Windows.GridLengthConverter()
If (hs1.Value = 0) Then
Dim gl1 As GridLength = CType(myGridLengthConverter.ConvertFromString(li1.Content.ToString()), GridLength)
col1.Width = gl1
ElseIf (hs1.Value = 1) Then
Dim gl2 As GridLength = CType(myGridLengthConverter.ConvertFromString(li1.Content.ToString()), GridLength)
col2.Width = gl2
ElseIf (hs1.Value = 2) Then
Dim gl3 As GridLength = CType(myGridLengthConverter.ConvertFromString(li1.Content.ToString()), GridLength)
col3.Width = gl3
End If
End Sub
private void changeColVal(object sender, RoutedEventArgs e)
{
txt1.Text = "Current Grid Column is " + hs1.Value.ToString();
}
private void changeCol(object sender, SelectionChangedEventArgs args)
{
ListBoxItem li = ((sender as ListBox).SelectedItem as ListBoxItem);
GridLengthConverter myGridLengthConverter = new GridLengthConverter();
if (hs1.Value == 0)
{
GridLength gl1 = (GridLength)myGridLengthConverter.ConvertFromString(li.Content.ToString());
col1.Width = gl1;
}
else if (hs1.Value == 1)
{
GridLength gl2 = (GridLength)myGridLengthConverter.ConvertFromString(li.Content.ToString());
col2.Width = gl2;
}
else if (hs1.Value == 2)
{
GridLength gl3 = (GridLength)myGridLengthConverter.ConvertFromString(li.Content.ToString());
col3.Width = gl3;
}
}