Существует ли WPF ListBox, эквивалентный списку окон Forms TopIndex? - PullRequest
0 голосов
/ 24 декабря 2008

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

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

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

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

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

1 Ответ

2 голосов
/ 25 декабря 2008

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

...