2009-11-25 2 views
7

У меня есть WPF ListBox, который показывает много данных. Мне нужна плавная прокрутка, поэтому я установил ListBox.ScrollViewer.CanContentScroll в значение False, которое отключает виртуализацию. Теперь, когда я открываю вкладку, где находится этот ListBox, я ничего не вижу за несколько секунд, потому что ListBox загружает/создает элементы/рендеринг. У меня также есть элемент управления, который показывает некоторую анимацию, которая указывает, что приложение запущено, и пользователь должен немного подождать.Как показать некоторую анимацию, а управление - рендеринг?

Как я могу показать этот элемент управления, пока ListBox недоступен?

+0

возможно, более подробная информация была бы полезна? Такие вещи, как ... какой язык и рамки вы работаете ... К сожалению, такие термины, как «ListBox», используются во многих местах. – Paul

+0

Он помечен WPF. – GraemeF

+0

Сколько предметов у вас есть в списке? –

ответ

2

Добавить сетку в расположение вашего списка и разместить внутри нее свой ListBox и ваш контроль анимации. Таким образом, они размещаются в одном месте. Элемент управления анимацией должен находиться в верхней части z-порядка и отображаться так. Как только ListBox закончит загрузку, вы скроете элемент управления анимацией, и вместо этого отобразится ListBox. Каждый раз, когда вам нужно выполнить еще одну длинную операцию, вы снова установите элемент управления анимацией.

+2

Как определить, что список уже отображен? И рендеринг выполняется в том же потоке, который «оживляет» анимацию, поэтому эффекта не будет. Или я не прав? Я уже использую эту технику, но когда мне нужно показать, что выполняется некоторая длинная работа (которая работает в другом потоке) (не-gui). – levanovd