我有一个数据网格(Datagrid),现在需要做如下操作:
Me.Cursor = Wait
Datagrid.ItemsSource = GetData()
Me.Cursor = Nothing
问题在于设置 .ItemsSource 之后,实际渲染行的时间间隔(相对较长)。因此,我的光标过早地被重置为正常状态。
是否有一种事件在 DataGrid 完成加载/渲染数据时触发?我知道有一个 _LoadingRow 事件,但它在数据加载期间触发,而不是在加载完成时触发?
我曾经遇到过同样的问题(可以参考这里),之后我在修改了ItemsSource之后,通过使用以下代码来解决它:
Dispatcher.InvokeAsync(() => { System.Windows.Input.Mouse.OverrideCursor = null; },
DispatcherPriority.ApplicationIdle);
它基本上是在应用程序变得空闲之前等待,然后将光标更改回默认值。使用FrameworkElement.Loaded事件并不足够,因为当我对ItemsSource进行更改时,它不会被触发,只有在DataGrid首次加载时才会被触发。