@OwDafuq

Как отрисовать много элементов в ItemsControl?

Есть порядка 500 элементов, которые хранятся в ObservableCollection, но при открытии нужного окна происходит лаг на пару секунд, после чего все элементы сразу же появляются на форме, как сделать плавную подгрузку всех элементов без лагов формы?
  • Вопрос задан
  • 214 просмотров
Решения вопроса 1
WNeZRoS
@WNeZRoS
Лаг может возникать из-за нескольких причин.
Первая причниа - долгая загрузка или создание элементов. Тогда, как пишет Михаил Усоцкий, следует вынести загрузку в другой поток.

Вторая причина - долгая отрисовка в WPF. В данном случае поможет виртуализация. Если у вас используется ItemsControl, то стоит его заменить на ListBox - в ItemsControl не работает виртуализация.
<ListBox VirtualizingStackPanel.IsVirtualizing="True" ItemsSource="{Binding ...}" />

Если у вас используется нестандартный ItemsPanel, то нужно также использовать панель с поддержкой виртуализации. В стандартном WPF такая одна - VirtualizingStackPanel, аналог StackPanel. Какие-то другие придётся писать самому или искать уже кем-то написанные.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы