2015-01-15 19 views
0

在我的DataGrid中,我想查找當前顯示的第一個和最後一個項目索引。這不像處理普通的舊ListBox和Scrollviewer時那麼簡單。查找DataGrid中當前顯示的第一個和最後一個項目的索引

有人能告訴我怎麼樣嗎?

+0

粘貼一些代碼。你的DataGrid現在看起來如何? – MajkeloDev

+1

你有沒有看到這個問題:https://stackoverflow.com/questions/5979827/count-the-number-of-visible-rows-in-a-datagrid它解釋瞭如何在DataGrid中查找可見項。有了這些信息,您可以找到第一個和最後一個可見項目的索引。 –

回答

0

您可以遍歷您的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; 
    } 
} 
+0

是的,我認爲,這將是相當緩慢,我有大量的項目。我希望在datagrids後代的某處會有一個項目偏移量和顯示的項目數量。即使Michal與上面聯繫在一起,它也會太慢。 – Hank

+1

您將不得不使用此參考http://referencesource.microsoft.com/#PresentationFramework/Framework/System/Windows/Controls/ItemContainerGenerator.cs,1b7909b08c58ddd0此參考.... –

相關問題