2013-11-09 4 views
0

У меня есть VariableSizeGridView (он же GridView с VariableSizedWrapGrid), и поскольку фреймворк не поддерживает ISupportIncrementalLoading на VariableSizedWrapGrid, я реализовал свой собственный, «прослушивая» родительский ScrollViewer GridView (этот конкретный случай a Hub control)Win 8.1 Проблемы с ScrollViewer с GridView

Все работает нормально, когда я добираюсь до конца scrollviewer, мой код вызывает процедуру, чтобы получить больше данных.

Проблема возникает, когда новые данные попадают на экран, scrollviewer автоматически прокручивается до конца, и процесс загрузки начинается снова, заканчивается бесконечным циклом, если я не перемещаю полосу прокрутки в другом месте.

Есть ли способ предотвратить, что scrollviewer автоматически переходит в конец после того, как я добавил некоторые элементы?

Благодаря

ответ

2

Вы можете создать пользовательский-контроль, который переопределяет от VariableSizeGridView и слушать, как вы, к ScrollViewer. Поскольку у вас есть доступ к последнему элементу GridView, после запуска загрузки большего количества элементов вы можете установить scrollviewer в последнюю позицию позиции. Получить визуальную ссылку на этот элемент, а затем вызвать этот код:

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); 
    } 

Использование и Tunning этого кода поможет вам предотвратить скроллбар, чтобы перейти к последней позиции.

+0

Спасибо, я на самом деле что-то изменил, я сохраняю последние позиции средства просмотра прокрутки до появления новых элементов и после изменения размера просмотра прокрутки, я установил горизонтальную прокрутку в предыдущее значение;) Спасибо в любом случае! – DVD

Смежные вопросы