Существует ли WPF ListBox, эквивалентный ListBox Windows Forms TopIndex?

StackOverflow https://stackoverflow.com/questions/392127

Вопрос

По сути, я хочу позволить пользователю вводить строковое значение и прокручивать окно списка до элемента, соответствующего введенному им тексту (или первому совпадению LIKE).

Если я использую метод .ScrollIntoView(), проблема в том, что он помещает элемент в нижнюю часть видимой области, если элемент находится ниже в списке, чем текущая позиция прокрутки, и вверху, если он выше. в списке, чем текущая позиция прокрутки.Я хочу сделать его последовательным, сделав его верхним элементом в списке (если, конечно, это не может быть связано с тем, что он находится на одной из последних «страниц» элементов).

Я попытался подделать это, выбрав элемент, который Икс далее вниз по списку, где x — количество видимых элементов.Это работает при опускании, но ломается при обратном подъеме.и мне не удалось определить, какой индекс в настоящее время находится наверху видимого места в моем списке.

В списках WinForms есть свойство .TopIndex, которое соответствует именно тому, что я ищу, но мне не удалось найти эквивалент WPF.У кого-нибудь есть идеи, как это сделать?

Заранее спасибо!

Это было полезно?

Решение

Используйте ScrollIntoView дважды: сначала для отображения самого последнего элемента в списке, а затем для отображения выбранного элемента.Таким образом, он всегда будет работать снизу вверх.Вам нужно будет вызывать UpdateLayout после каждого вызова, чтобы убедиться в правильности позиций.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top