WPF Datagrid: carga perezosa / desplazamiento infinito

Completo la cuadrícula de datos con 250 filas. Cuando el usuario se desplaza hacia abajo utilizando la barra de desplazamiento (por debajo del 75%, por ejemplo), quiero obtener las siguientes 250 filas de la base de datos, y así sucesivamente. La idea es que la cuadrícula podría tener millones de resultados y no queremos cargarlos todos, hasta que el usuario los solicite. ¿Existe un mecanismo para esto?

EDIT: porque parece haber mucha confusión: no estoy buscando las soluciones de virtualización de datos estándar, ya usoello. Pero todos requieren que especifique el número de 'filas virtuales' de antemano, y esa consulta es muy costosa para mí. La razón por la que lo requieren es porque hace que sea mucho más fácil calcular la página / desplazamiento / etc. actual cuando conoce los elementos totales en la cuadrícula. Pero es una consulta sql muy costosa calcular esa cantidad, por lo que quiero migrar a otra solución donde pueda omitir la consulta COUNT ().

Respuestas a la pregunta(2)

Su respuesta a la pregunta