我有一个包含另一个DataGrid的一些模板列的DataGrid。我的问题是,如果某些行中有很多内容,那么它们的高度不会调整,因此整个内容都可见,但它会被切断,从而给出行重叠的印象。但是,只要向网格添加新行或向主网格的某一行内的小型网格添加新行,布局就会更新,行高也会正确调整大小。WPF Toolkit DataGrid - 行重叠(行高问题)
所以问题是只有当第一次加载网格。
有没有办法强制网格大小的行高度的内容?
感谢
我有一个包含另一个DataGrid的一些模板列的DataGrid。我的问题是,如果某些行中有很多内容,那么它们的高度不会调整,因此整个内容都可见,但它会被切断,从而给出行重叠的印象。但是,只要向网格添加新行或向主网格的某一行内的小型网格添加新行,布局就会更新,行高也会正确调整大小。WPF Toolkit DataGrid - 行重叠(行高问题)
所以问题是只有当第一次加载网格。
有没有办法强制网格大小的行高度的内容?
感谢
我不知道这是什么,但你可以尝试打电话InvalidateVisual(),一段时间后,加载元素时。这迫使全新的布局传递...
我的UserControl中的DataGrid正在做同样的事情。在此示例中,仅有32行数据,其中包含五个DataGridTemplateColumns,其中包含<图像0和四个<TextBlock> s。
我的控件显示搜索结果,如果我重新运行相同的搜索,它并不总是这样做。另外,裁剪只会在第一页的结果上出现。向下行可以。
使用InvalidateVisual()没有帮助。
如果任何人对如何解决这个问题有任何想法,或者可以指出这是否是该控件的已知问题,那么我会有兴趣听到它。
今天我这个有些严重的问题(错误?),所以我会分享我试过,什么几乎工作......(并希望有人知道实际修复)
在我的情况下,只有10行或更多行才会出现错误。在行之外,十个第一行在某些情况下对于内容而言具有太小的高度。 (我首先想到这九个项目是互相叠加的,这对我来说是愚蠢的。)有很多列,所以有一个滚动条。单击滚动条将高度调整为适当的值。
有些事情,在我的经验不工作:
但是:
的一件事(我发现)的DataGrid似乎尊重是MinRowHeight设定,所以现在我有一个有值鲁钝,我希望这不会稍后在修改数据模板时会导致问题。
我遇到了与.NET Framework 4.0附带的DataGrid相同的错误。 在某些情况下(没有水平滚动条,窗口大于特定大小,...)行显示不正确,但放置在另一个顶部(具有小偏移量),因此最后一行完全可见。
首先,我试图在DataGrid中填充行之后自动执行UI行为,以便更新布局。但后来我发现,你可以使用调度程序重新呈现控件,在我的情况下,最终修复了这个bug。
我的整个代码的变化基本上是这样的(填充的DataGrid后右):
Action emptyAction = delegate() { };
myDataGrid.Dispatcher.Invoke(DispatcherPriority.Render, emptyAction);
在我来说,我只需要在循环添加额外之前添加的第一行。
我想4列和ñ行是这样的:
private void InitToList() {
Grid wp = new Grid();
wp.Margin = new Thickness(0);
wp.ColumnDefinitions.Add(new ColumnDefinition());
wp.ColumnDefinitions.Add(new ColumnDefinition());
wp.ColumnDefinitions.Add(new ColumnDefinition());
wp.ColumnDefinitions.Add(new ColumnDefinition());
wp.RowDefinitions.Add(new RowDefinition()); // adding this fixed the overlapping
int curCol = 0;
int curRow = 0;
foreach (string name in toIds) {
if (curCol >= wp.ColumnDefinitions.Count()) {
wp.RowDefinitions.Add(new RowDefinition());
curCol = 0;
curRow++;
}
CheckBox cb = new CheckBox();
cb.Name = String.Format("{0}Check", name.ToLower().Replace(" ", ""));
cb.IsChecked = false;
cb.Margin = new Thickness(5, 5, 5, 5);
cb.Content = name;
Grid.SetColumn(cb, curCol);
Grid.SetRow(cb, curRow);
wp.Children.Add(cb);
curCol++;
}