Ширина столбца DataGridView в процентах

есть ли способ дать каждому столбцу в DataGridView процентную ширину общей сетки? В настоящее время я использую фиксированную ширину, но хотел бы дать одному столбцу ширину 15%, другому ширину 25% и так далее, чтобы 100% таблицы заполнялось и изменялось с помощью сетки.

3 ответов


попробуйте использовать DataGridViewColumn.FillWeight собственность. В основном вы назначаете вес каждому столбцу, а столбцы изменяют размер в соответствии с этими весами. Арктикула MSDN не так велика. См. статью ниже для лучшего объяснения -

представление данных с помощью элемента управления DataGridView в .NET 2.0-автоматический размер столбца


можно использовать преобразователь значений
Это вычитает параметр, но вы можете разделить его на параметр.

<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();
        }
    }

просто создайте файл Skin. и примените его через web config