添加DataGrid重新调整大小的功能

时间:2012-03-27 13:49:35

标签: c# .net wpf wpfdatagrid resize

我正在努力在WPF DataGrid中实现重新调整大小的功能,它支持通过列/行标题重新调整大小,但我想要的是允许在网格线上重新调整大小。

因此,用户可以从DataGrid中的任何位置重新调整行/列的大小。我已经能够实现这个功能,它可以很好地用于列,但是如果行被搞砸了。

您可以通过标题重新调整行的大小,也可以通过该行的任何单元格重新调整大小,但如果您一起使用它们就会出现问题,即一旦您通过单元格重新调整行大小,重新调整行大小标头将停止工作(显示奇怪的行为)。这是它的样子(注意破碎的网格线......) -

enter image description here

我创建了一个重现此行为的示例 -

WPF Toolkit DataGrid Sample - Adding GridLines Resizing

重现问题

  1. 通过网格线(任何单元格)重新调整行大小,然后

  2. 通过行标题重新调整同一行的大小。

  3. 会感激任何帮助。

    由于

1 个答案:

答案 0 :(得分:0)

我通过设置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 DataGrid Customization: Resizing Row/Column through DataGridCell gridlines