2015-05-19 28 views
0

我有一个ItemsControl将ItemsSource属性绑定到ViewModel。 DataTemplate渲染需要一些时间。我想在DataTemplate呈现时显示“繁忙指示器”。如何显示WPF ItemsControl的繁忙指标?

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

这可以用DataTriggers完成,还是可以通过使用ItemsControl的事件来完成?基本上,当绑定开始并且渲染完成时,我需要一个事件。

+1

也许使用* virtualized * ItemsControl将删除对这种繁忙指标的需求。 – pindumb

回答

1

我将我希望在网格中拥有繁忙指标的项目包装起来,并将指标添加为水平和垂直居中的兄弟。这可以让它们很好地重叠。然后,我将指标的可见性绑定到ViewModel上的IsBusy属性,让绑定处理所有事情。

+0

感谢您的快速响应。我的ViewModel中的数据将在绑定到ItemsControl之前加载。当我设置ItemsControl的ItemsSource的绑定时,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 –