Я пытаюсь использовать ListBox
для отображения пользователю бесконечного списка опций.В настоящее время я просто вырезаю список в произвольной точке, но я бы хотел, чтобы пользователь мог прокручивать страницу вниз так, как ему хочется.Кроме того, я хочу избегать генерации невидимых элементов в максимально возможной степени, так как для генерации каждого элемента должны быть выполнены некоторые вычисления.
Я пытался написать listBox.ItemsSource = enumerable
, ожидая, что он будет запрашивать у перечисляемого только видимые элементы,но вместо этого он пытается прочитать все элементы, что вызывает бесконечный цикл, если элементов бесконечно много.
Моя лучшая идея - добавить прослушиватель, который получает уведомление при прокрутке вниз ListBox
, и добавлять новые элементы, такие какчто всегда есть k
больше элементов после последнего видимого элемента (где k
- это, вероятно, количество элементов, видимых за раз, так что работает Page Down).
Есть ли какой-нибудь более чистый способ справиться с этим?