Не зная дополнительного контекста о вашем приложении, может случиться так. Первое, что приходит на ум, это то, что у вас очень «тяжелое» визуальное дерево. Каждый элемент в ListBox собирается создать некоторый график визуальных объектов. Чем больше у вас есть, тем больше времени требуется для рендеринга.
Когда эти элементы не отображаются на экране, Silverlight все еще выполняет работу по их рендерингу. В основном это означает, что прохождение Layout() и Measure() выполняется во всех ваших элементах ListBox, связанных с данными, даже если они не видны.
Хитрость заключается в использовании виртуализации, чтобы заставить Silverlight не выполнять проходы Layout/Measure на элементах управления, которые в то время не видны в видимой области элемента управления.
Это сообщение в блоге, в котором описывается, как это сделать с помощью StackPanel. Это не должно занять много абстрагировать это в ListBox или еще лучше, вы могли бы просто сделать контрольный контейнер для вашего ListBox виртуализации стек панели, а затем вы бы сделали :)
http://blogs.msdn.com/uberdemo/archive/2009/02/18/a-virtualizedstackpanel-control-in-silverlight-2-0.aspx