您可以创建一个覆盖 VariableSizeGridView 的自定义控件,并像您一样监听滚动查看器。由于您可以访问 GridView 的最新元素,因此在开始加载更多元素后,您可以将滚动查看器设置为最新的位置位置。获取对该元素的视觉引用,然后调用以下代码:
FrameworkElement focusedElement = FocusManager.GetFocusedElement() as FrameworkElement;
GeneralTransform focusedVisualTransform = parent.TransformToVisual(_scrollViewer);
ApplyHorizontalScrolling(focusedElement, focusedVisualTransform);
private void ApplyHorizontalScrolling(FrameworkElement focusedElement, GeneralTransform focusedVisualTransform)
{
Rect rectangle = focusedVisualTransform.TransformBounds(new Rect(new Point(focusedElement.Margin.Left, focusedElement.Margin.Top), focusedElement.RenderSize));
double horizontalOffset = _scrollViewer.HorizontalOffset + (rectangle.Left);
_scrollViewer.ChangeView(horizontalOffset, 0, _scrollViewer.ZoomFactor);
}
使用和调整此代码,将帮助您防止滚动条转到最新位置。