我正在努力在WPF DataGrid中实现重新调整大小的功能,它支持通过列/行标题重新调整大小,但我想要的是允许在网格线上重新调整大小。
因此,用户可以从DataGrid中的任何位置重新调整行/列的大小。我已经能够实现这个功能,它可以很好地用于列,但是如果行被搞砸了。
您可以通过标题重新调整行的大小,也可以通过该行的任何单元格重新调整大小,但如果您一起使用它们就会出现问题,即一旦您通过单元格重新调整行大小,重新调整行大小标头将停止工作(显示奇怪的行为)。这是它的样子(注意破碎的网格线......) -
我创建了一个重现此行为的示例 -
WPF Toolkit DataGrid Sample - Adding GridLines Resizing
重现问题
通过网格线(任何单元格)重新调整行大小,然后
通过行标题重新调整同一行的大小。
会感激任何帮助。
由于
答案 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