Установка максимальной ширины автогенерации для автоматически сгенерированных столбцов в сетке данных - PullRequest
0 голосов
/ 01 сентября 2011

У меня есть DataGrid, который я привязываю к DataTable, который был заполнен запросом SQL. Я хотел бы, чтобы столбцы этой сетки генерировались автоматически с шириной до определенного количества пикселей, но при этом были бы расширяемыми пользователем, если они хотят, чтобы он был шире. В настоящее время для свойства ColumnWidth в сетке данных задано значение SizeToHeader (которое, похоже, не работает так, как описано в любом случае, поскольку оно по-прежнему определяет размер содержимого ячейки).

Есть ли способ установить максимальную ширину генерации?

Настройка MaxColumnWidth не позволяет пользователю изменять размер столбца, который больше этой ширины.

Я также пытался подключиться к AutoGeneratedColumns, но поскольку строки еще не загружены, свойства ActualWidth просто представляют установленную мной минимальную ширину. Есть ли событие, которое запускается, когда сетка данных завершает загрузку своего начального набора строк?

Ответы [ 3 ]

1 голос
/ 01 сентября 2011

Переберите коллекцию столбцов и получите ширину для каждого столбца. Если ширина превышает пороговое значение, установите его на максимальную ширину. Вы хотели бы сделать это после инициализации элемента управления.

Эта статья может быть полезна: http://support.microsoft.com/kb/812422

Как-то так может работать:

foreach(var c in grid.Columns)
{
    var width = c.Width;
    if(width > threshold)
    {
        c.Width = threshold;
    }
}
0 голосов
/ 16 октября 2013

Мне нужно было немного изменить код rtalbot, чтобы он работал для моего проекта WPF / .net 4.5 ... фактическая ширина и длина данных:

        // fix extra wide columns
        foreach (var c in dgMain.Columns)
        {
            var width = c.ActualWidth;
            if (width > 200)
            {
                c.Width = new DataGridLength(200);
            }
        }
0 голосов
/ 01 сентября 2011

Из документации свойство Width, установленное для отдельного DataGridColumn, имеет приоритет над свойством ColumnWidth. Возможно, вам удастся перебрать DataGridColumns в событии AutoGeneratedColumns и установить отдельные значения ширины и заставить их придерживаться.

...