ListBox.ScrollIntoView () не работает в WP7 - PullRequest
9 голосов
/ 11 октября 2010

Эй, ребята, я хочу переместить полосу прокрутки списка вниз, всякий раз, когда новый элемент добавляется в источник элементов, но ScrollIntoView (), похоже, ничего не делает, если я передаю это либо ссылку на вновь добавленный элементили индекс этого.Кто-нибудь заставил это сработать, или есть какие-либо другие предложения относительно того, как я мог бы прокрутить список вниз?

Какой-то код:

    void Actions_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
    {
        //if a new item was added, set it to the selected item
        if (e.NewItems != null)
        {
            MainListBox.SelectedIndex = e.NewStartingIndex;

            //MainListBox.ScrollIntoView(MainListBox.Items.Last());     //todo: this doesnt seem to work
        }
    }

Ответы [ 4 ]

32 голосов
/ 14 октября 2010

MSDN говорит:

Когда изменяется содержимое коллекции ItemsSource, особенно если многие элементы добавляются или удаляются из коллекции, вам может потребоваться вызвать UpdateLayout () перед вызовом ScrollIntoView, чтобы указанный элемент прокрутился в область просмотра.

Может ли это быть вашей проблемой?

4 голосов
/ 05 ноября 2012

Это ответ:

http://dotnet -experience.blogspot.com.es / 2010/12 / wpf-listview-scrollintoview.html

ВНесколько слов: элементы загружаются в ListBox асинхронно, поэтому если вы вызываете ScrollIntoView () в событии CollectionChanged (или аналогичном), у него еще не будет элементов, поэтому прокрутка отсутствует.

Надеюсь, это поможет,это наверняка помогло мне!; -)

3 голосов
/ 11 октября 2010

ScrollIntoView определенно работает.Я просто добавил кнопку приложения в пустое приложение с привязкой к базе данных и, выполнив следующее нажатие кнопки, прокрутил список.

MainListBox.ScrollIntoView(MainListBox.Items.Last());

Может быть проблема с событием на selectionChanged?У вас есть что-нибудь к этому подключенное?
Работает ли ScrollIntoView, если вы не установили выбранный элемент?

0 голосов
/ 26 августа 2013

вы можете вставить новый элемент всегда сверху

yourItemList.Insert (0, item);

, таким образом, ScrollIntoView не требуется.Может быть, это поможет !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...