2015-05-19 9 views
0

У меня есть ItemControl, где я привязываю свойство ItemsSource к моей ViewModel. Для отображения DataTemplate требуется несколько секунд. Я хочу отобразить «индикатор занятости», пока отображается DataTemplate.Как показать индикатор занятости для элемента управления WPF?

<ItemsControl ItemsSource="{Binding Request.RequestDiscussions}"> 

Можно ли это сделать с помощью DataTriggers или это можно сделать с помощью событий ItemsControl? В принципе, мне нужно событие, когда начинается привязка и когда рендеринг завершен.

+1

Возможно использование * виртуализированного * ItemsControl устранит необходимость в таком индикаторе занятости. – pindumb

ответ

1

Я обертываю элемент Я хочу иметь индикатор занятости в сетке и добавить индикатор в виде брата, который центрируется по горизонтали и по вертикали. Это позволяет им хорошо накладываться. Затем я привязываю видимость индикатора к свойству IsBusy на моей модели просмотра, позволяя привязкам заботиться обо всем.

+0

Спасибо за быстрый ответ. Данные в моей модели ViewModel будут загружены до привязки к ItemsControl. Когда я устанавливаю привязку ItemsSource элемента ItemsControl, это рендеринг XAML, который занимает пару минут, а не фактическая задача получения данных. Мне нравится ваше представление о сетке-оболочке и вы можете увидеть, как это будет работать, если бы у меня было событие для установки «IsBusy», когда начинается привязка и когда XAML завершил рендеринг. – LawMan

+0

Возможно, вы можете использовать события 'CompositionTarget.Rendering' или' Control.OnApplyTemplate', чтобы знать, когда был запущен рендеринг, но, к сожалению, я не вижу подходящего события для завершения. https://msdn.microsoft.com/en-us/library/system.windows.media.compositiontarget.rendering(v=vs.110).aspx –