2013-03-22 14 views
6

Czy istnieje sposób na udostępnienie każdej kolumny w DataGridView procentowej szerokości całkowitej siatki? Obecnie używam stałych szerokości, ale chciałbym podać jedną kolumnę o szerokości 15%, kolejną o szerokości 25% itd., Tak aby 100% tabeli zostało wypełnione i zmienione za pomocą siatki.Szerokość kolumn danych DataGridView w procentach

Odpowiedz

1

Można użyć konwertera wartości
Odejmuje parametr, ale można go podzielić za pomocą parametru.

<local:WidthConverter x:Key="widthConverter"/> 

<GridViewColumn Width="{Binding ElementName=lvCurDocFields, Path=ActualWidth, Converter={StaticResource widthConverter}, ConverterParameter=100}"> 



[ValueConversion(typeof(double), typeof(double))] 
    public class WidthConverter : IValueConverter 
    { 
     public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      // value is the total width available 
      double otherWidth; 
      try 
      { 
       otherWidth = System.Convert.ToDouble(parameter); 
      } 
      catch 
      { 
       otherWidth = 100; 
      } 
      if (otherWidth < 0) otherWidth = 0; 

      double width = (double)value - otherWidth; 
      if (width < 0) width = 0; 
      return width; // columnsCount; 
     } 

     public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      throw new NotImplementedException(); 
     } 
    } 
+1

Dziękujemy za przykładowy kod. Jestem pewny, że ktoś z tego skorzysta, chociaż drugą odpowiedź łatwiej mi będzie wprowadzić w życie. Doceniam twoją pomoc! –

-3

wystarczy utworzyć plik skóry. i zastosować go poprzez konfigurację internetową

+0

Aby była to poprawna odpowiedź, podaj więcej kontekstu, przykładów, linków lub czegoś, co uzasadnia twoją odpowiedź. – ethrbunny

Powiązane problemy