The "gap" I am referring to is the items in the middle are the rows that the ScrollIntoViewAsync method will consider as in view while they are not visible in the UI.
I tracked my problem down to the following method:
Which returns true even when the item is not showing.
I choose to go with another solution since I also need the item that is being scrolledintoview to be centered in the UI.
var focusElement = GetElementToScrollTo();
var datarow = focusElement.ParentOfType<Telerik.Windows.Controls.GridView.GridViewRow>();
var scrollBar = grid.ChildrenOfType<GridViewScrollViewer>().FirstOrDefault();
gridCenter = grid.ActualHeight / 2;
var transform = focusElement.TransformToVisual(grid
var myUiElementPosition = transform.Transform(
scrollAmount = myUiElementPosition.Y - gridCenter;
//Debug.WriteLine("Diff from center:" + scrollAmount.ToString());
//Debug.WriteLine("Scrolling to:" + (scrollBar.VerticalOffset + scrollAmount).ToString());
scrollBar.ScrollToVerticalOffset(scrollBar.VerticalOffset + scrollAmount);
Hope that could help someone else.