Сохранение связанной позиции прокрутки ListBox при изменении базовой коллекции - PullRequest
0 голосов
/ 29 июня 2011

У меня есть ScrollViewer и ListBox внутри него, который привязан к ObservableCollection в модели представления.ScrollViewer максимально развернут, чтобы занять все доступное пространство родительского контейнера.Я обнаружил, что когда коллекция модифицируется и в итоге создает больше ListBoxItems, чем может поместиться в видимой области ScrollViewer, ScrollViewer прокручивается вниз, чтобы показать последний элемент в ListBox.Как предотвратить прокрутку ScrollViewer при обновлении дочерних элементов ListBox?Я бы хотел, чтобы положение прокрутки оставалось неизменным при каждом обновлении коллекции в модели представления.Заранее спасибо!

1 Ответ

0 голосов
/ 29 июня 2011

Вам придется управлять этим самостоятельно.У ListBox есть метод ScrollIntoView, который позволяет прокрутить до определенного местоположения:

http://msdn.microsoft.com/en-us/library/system.windows.controls.listbox.scrollintoview(v=VS.95).aspx

Определение элементов, которые в данный момент видны, если вам это нужно, нетак просто.См. ItemsControlExtensions, который я написал как часть проекта WP7Contrib:

http://wp7contrib.codeplex.com/SourceControl/changeset/view/67473#1475881

У него есть GetItemsInView метод расширений, который предоставит список видимых элементов.

...