在我的DataGrid中,我想查找當前顯示的第一個和最後一個項目索引。這不像處理普通的舊ListBox和Scrollviewer時那麼簡單。查找DataGrid中當前顯示的第一個和最後一個項目的索引
有人能告訴我怎麼樣嗎?
在我的DataGrid中,我想查找當前顯示的第一個和最後一個項目索引。這不像處理普通的舊ListBox和Scrollviewer時那麼簡單。查找DataGrid中當前顯示的第一個和最後一個項目的索引
有人能告訴我怎麼樣嗎?
您可以遍歷您的ItemSource &獲取第一個&最後一個DataGridRow
。這不是一個好的解決方案,但你可以嘗試這樣。
DataGridRow firstRow = null;
DataGridRow lastRow = null;
for (int i = 0; i < dataGrid.Items.Count; i++)
{
DataGridRow row = (DataGridRow)dataGrid.ItemContainerGenerator.ContainerFromIndex(i);
if (row != null)
{
firstRow = row;
while (row != null)
{
row = (DataGridRow)dataGrid.ItemContainerGenerator.ContainerFromIndex(++i);
}
lastRow = (DataGridRow)dataGrid.ItemContainerGenerator.ContainerFromIndex(i - 1);
break;
}
}
是的,我認爲,這將是相當緩慢,我有大量的項目。我希望在datagrids後代的某處會有一個項目偏移量和顯示的項目數量。即使Michal與上面聯繫在一起,它也會太慢。 – Hank
您將不得不使用此參考http://referencesource.microsoft.com/#PresentationFramework/Framework/System/Windows/Controls/ItemContainerGenerator.cs,1b7909b08c58ddd0此參考.... –
粘貼一些代碼。你的DataGrid現在看起來如何? – MajkeloDev
你有沒有看到這個問題:https://stackoverflow.com/questions/5979827/count-the-number-of-visible-rows-in-a-datagrid它解釋瞭如何在DataGrid中查找可見項。有了這些信息,您可以找到第一個和最後一個可見項目的索引。 –