WPF数据网格:Loading_Completed事件?

4

我有一个数据网格(Datagrid),现在需要做如下操作:

Me.Cursor = Wait
Datagrid.ItemsSource = GetData()
Me.Cursor = Nothing

问题在于设置 .ItemsSource 之后,实际渲染行的时间间隔(相对较长)。因此,我的光标过早地被重置为正常状态。
是否有一种事件在 DataGrid 完成加载/渲染数据时触发?我知道有一个 _LoadingRow 事件,但它在数据加载期间触发,而不是在加载完成时触发?
2个回答

3

我曾经遇到过同样的问题(可以参考这里),之后我在修改了ItemsSource之后,通过使用以下代码来解决它:

Dispatcher.InvokeAsync(() => { System.Windows.Input.Mouse.OverrideCursor = null; }, 
       DispatcherPriority.ApplicationIdle);

它基本上是在应用程序变得空闲之前等待,然后将光标更改回默认值。使用FrameworkElement.Loaded事件并不足够,因为当我对ItemsSource进行更改时,它不会被触发,只有在DataGrid首次加载时才会被触发。


0
你可以看一下 BeginInit() 和 EndInit() 方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接