Sdílet prostřednictvím


Postupy: Vytvoření a použití objektu GridLengthConverter

Příklad

Následující příklad ukazuje, jak vytvořit a použít instanci GridLengthConverter. Příklad definuje vlastní metodu volanou changeCol, která předá ListBoxItemContent objektuGridLengthConverter, který převede instanci ListBoxItem objektu GridLength. Převedená hodnota se pak předá zpět jako hodnota Width vlastnosti ColumnDefinition prvku.

Příklad také definuje druhou vlastní metodu, která se nazývá changeColVal. Tato vlastní metoda převede Value hodnotu na a String pak tuto hodnotu předá zpět do ColumnDefinitionWidthSlider prvku.

Všimněte si, že samostatný soubor XAML (Extensible Application Markup Language) definuje obsah ListBoxItemsouboru .

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

Viz také