que tenía el mismo problema con filas mostrando como Visible = true
incluso cuando no estaban 't.
Tratando de encontrar una solución, publiqué esta pregunta: Visible rows in DataGrid is off by 1 (counted using ContainerFromItem).
Esto es lo que funcionó para mí:
uint VisibleRows = 0;
var TicketGrid = (DataGrid) MyWindow.FindName("TicketGrid");
foreach(var Item in TicketGrid.Items) {
var Row = (DataGridRow) TicketGrid.ItemContainerGenerator.ContainerFromItem(Item);
if(Row != null) {
if(Row.TransformToVisual(TicketGrid).Transform(new Point(0, 0)).Y + Row.ActualHeight >= TicketGrid.ActualHeight) {
break;
}
VisibleRows++;
}
}
Para mayor orientación, hay algunos /* comments */
en mi respuesta a la pregunta vinculada, así como un hilo de comentarios del usuario en la pregunta misma que llevó a la respuesta .
Esto no funciona. De hecho, en mi ciclo estaba usando 'ItemContainerGenerator.ContainerFromIndex' y algunos elementos que aún no se muestran tienen contenedor. –