Потребление большого набора данных в Silverlight 4 - PullRequest
1 голос
/ 26 августа 2011

Я хочу воспользоваться асинхронной загрузкой данных, поскольку мои пользователи могут иметь скрытые соединения. Не исключено, что они потянут нумерацию данных в тысячи записей, а иногда даже больше. У меня нет доступного мне источника данных, который дал бы мне мои тысячи записей прямо сейчас. Я просто хочу подтвердить, что пользователь сможет видеть содержимое сетки или списка, пока остальная часть набора данных загружается асинхронно в фоновом режиме. Похоже, что виртуализация данных могла бы быть вариантом, но статьи, которые я нашел, были либо мусорными, либо основаны на более старой версии SL. У кого-нибудь есть ссылки на POC или примеры такого поведения?

Если я включу передачу данных в своем списке, отобразится ли первая страница данных на экране, а остальные будут загружаться? Или он загружает данные только при переходе пользователя на следующую страницу?

1 Ответ

1 голос
/ 26 августа 2011

Вы можете воспользоваться преимуществами виртуализации данных,

  • Сделать количество создаваемых элементов интерфейса пропорциональным тому, что отображается на экране с помощью VirtualizingStackPanel.IsVirtualizing = "True".

  • Сделайте так, чтобы фреймворк перерабатывал контейнеры предметов вместо их каждый раз, устанавливая VirtualizingStackPanel.VirtualizationMode = "Переработка".

  • Отложить прокрутку, когда полоса прокрутки в действии, с помощью ScrollViewer.IsDeferredScrollingEnabled = "True". Обратите внимание, что это только улучшает воспринимаемую производительность, ожидая, пока пользователь не выпустит большой палец полосы прокрутки, чтобы обновить содержимое. Тем не менее, мы увидим, что это также улучшает фактическую производительность в сценариях, описанных ниже.

Приведенный выше текст взят из превосходного документа по виртуализации данных Беа Столлинца, написанного для WPF, но также принятого в Silverlight.

Вы также можете использовать модель асинхронного программирования .NET, такую ​​как IAsyncResult , TPL и EAP .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...