How to: Create and Use a GridLengthConverter Object


The following example shows how to create and use an instance of GridLengthConverter. The example defines a custom method called changeCol, which passes the ListBoxItem to a GridLengthConverter that converts the Content of a ListBoxItem to an instance of GridLength. The converted value is then passed back as the value of the Width property of the ColumnDefinition element.

The example also defines a second custom method, called changeColVal. This custom method converts the Value of a Slider to a String and then passes that value back to the ColumnDefinition as the Width of the element.

Note that a separate Extensible Application Markup Language (XAML) file defines the contents of a ListBoxItem.

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

See Also