Добавление возможности изменения размера DataGrid - PullRequest
0 голосов
/ 27 марта 2012

Я работаю над реализацией функции изменения размера в WPF DataGrid, она поддерживает изменение размера через заголовки столбцов / строк, но я хочу разрешить изменение размера линий сетки.

Таким образом, пользователь может изменять размер строк / столбцов из любой точки DataGrid. Мне удалось реализовать функциональность, и она отлично работает для столбцов, но в случае строк это испортилось.

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

enter image description here

Я создал образец для воспроизведения этого поведения -

Образец таблицы данных WPF Toolkit - добавление размеров сетки GridLines

Воспроизвести задачу

  1. Изменить размер строки через линии сетки (любая ячейка), а затем

  2. Изменить размер той же строки в заголовке строки.

оценят любую помощь.

Спасибо

1 Ответ

0 голосов
/ 16 апреля 2012

Я решил проблему, установив высоту CellPresenter вместо Row.Вот основной блок кода -

double newHeight = cellsPresenter.ActualHeight + e.VerticalChange;     
DataGridRowHeader rowHeader = GetFirstVisualChild<DataGridRowHeader>(row);    
if (rowHeader != null)    
{ 
    // clamp the CellsPresenter size to the MaxHeight of Row, 
    // because row wouldn't grow any larger
    double maxHeight = row.MaxHeight;
    if (newHeight > maxHeight)
    {
        newHeight = maxHeight;
    }
}

cellsPresenter.Height = newHeight;

// Updating row's height doesn't work correctly; shows weird behavior    
// row.Height = newHeight >= 0 ? newHeight : 0;

Я подробно писал об этом здесь -

Настройка сетки данных WPF: изменение размера строки / столбца с помощью линий сетки DataGridCell

...