Сохранение позиции прокрутки связанного ListBox WPF, когда набор изменяется

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

11
задан Dave Clemmer 29 July 2011 в 21:13
поделиться

3 ответа

Я не уверен, есть ли для этого переопределение, но я сомневаюсь в этом.

В случае сомнений используйте ручное связывание? : -} Серьезно, поведение привязки по умолчанию будет - ну - по умолчанию, поэтому, если вам нужно особое поведение, ручная привязка - лучший выбор. При ручной привязке вы можете сохранить позицию прокрутки и сбросить ее после добавления элементов.

0
ответ дан 3 December 2019 в 11:52
поделиться

Создайте CollectionView. Попробуйте следующее:

    private ObservableCollection<int> m_Values;
    private CollectionView m_View;

    private void Bind()
    {
        m_Values = new ObservableCollection<int>();
        m_View = new CollectionView(m_Values);
        MyListBox.ItemsSource = m_View;
    }

    private void MyListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        Debug.WriteLine(m_View.CurrentItem);
        Debug.WriteLine(m_View.CurrentPosition);
    }
0
ответ дан 3 December 2019 в 11:52
поделиться

Вы контролируете, когда что-то добавляется? Я имею в виду, у вас есть одна или две определенные точки, в которых данные изменяются? Если это так, одно простое решение (возможно, не изящное) было бы иметь локальную переменную int для хранения текущего ListBox.SelectedIndex. Непосредственно перед изменением данных сохраните selectedIndex в этой переменной, а после добавления данных установите для SelectedIndex listBox значение этой переменной.

0
ответ дан 3 December 2019 в 11:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: