Задать вопрос
@OwDafuq

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

Есть порядка 500 элементов, которые хранятся в ObservableCollection, но при открытии нужного окна происходит лаг на пару секунд, после чего все элементы сразу же появляются на форме, как сделать плавную подгрузку всех элементов без лагов формы?
  • Вопрос задан
  • 226 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Разработчик игр на Unity
    18 месяцев
    Далее
  • Stepik
    Программирование на C# 5.0
    1 неделя
    Далее
  • Ulearn.me
    Проектирование на языке C#
    1 неделя
    Далее
Решения вопроса 1
WNeZRoS
@WNeZRoS
Лаг может возникать из-за нескольких причин.
Первая причниа - долгая загрузка или создание элементов. Тогда, как пишет Михаил Усоцкий, следует вынести загрузку в другой поток.

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

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

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

Похожие вопросы