我有一個包含另一個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++;
}