Я не могу ответить на ваш вопрос. Даже если бы я знал технологию, у меня не было бы ответа, который бы отвечал вашим потребностям. Отчасти проблема заключается в том, что вы спрашиваете: «Помоги мне решить эту проблему так, как я пытаюсь ее решить», а не «здесь проблема бизнеса, какое решение лучше».
Мой совет: вернемся к основной проблеме, которая звучит как «Мне нужен способ обновления« списка »новыми событиями, сохраняя список до 1000 элементов или меньше». Исходя из этого, у вас есть решение ListBox, добавленное снизу и очищенное сверху как ваше решение. И я не уверен, как отключить прокрутку в вашем решении, но я не уверен, что это единственный способ решить бизнес-проблему.
Разбит, есть несколько вопросов для ответа:
- Как связать / обновить данные?
- Как удержать элемент управления от прокрутки до новой позиции при изменении количества связанных элементов?
Что касается связывания, то программное добавление является одним из вариантов, добавляете ли вы снизу и обрезать верх или добавлять сверху и обрезать низ. Другое - собрать данные и заново привязать. Я предположил бы, что есть другие.
Проблема с прокруткой - это не проблема прокрутки, а проблема «запомни, что я смотрю» или проблема «всегда отображать новейшие». Если всегда отображать новейшие, вам нужно найти способ убедиться, что вы в конце, когда что-то добавлено или удалено. Если пользователь может поменять позицию, вам нужно иметь возможность хранить, где он находится, и возвращаться в эту позицию. Вы добавили некоторую сложность, поскольку ваш список может содержать от 1 до 1000 элементов, поэтому позиция прокрутки, за исключением всегда внизу, является рискованной, если вы не работаете в процентах. Независимо от того, решает ли отключение прокрутки непосредственную проблему, если есть деловое требование помнить позицию пользователя, вы должны выполнить шаг проверки после обновления данных.
В качестве последнего предложения рассмотрим, как другие люди решили проблему отображения потоковых данных. Следовать хорошо известному шаблону - хорошая идея, так как он дает пользователю знакомый интерфейс. Зачастую с потоковыми данными поток имеет очень небольшой набор строк (достаточно, чтобы заполнить экран, а не 1000), но позволяет при необходимости вернуться назад и посмотреть на предыдущие «зарегистрированные» события. Еще раз, я не уверен, что ваше решение требует решения потокового типа, но вы все равно должны вернуться к основной бизнес-проблеме и начать с нее.