有没有一个DataGrid的“渲染完成”事件?

12
当我加载DataGrid时,我会将鼠标指针更改为等待图标,从数据库加载数据到我的ItemsSource中,然后将鼠标指针设置回默认值。这很有效,但是事实上,在ItemsSource被填充和DataGrid实际呈现数据之间存在延迟,因此鼠标指针太早就恢复成默认状态了。
是否有一个事件在DataGrid完全完成呈现时触发,以便于我的鼠标指针可以在正确的时间返回到默认状态?

https://stackoverflow.com/questions/11986431/busyindicator-to-datagrid - CharithJ
1个回答

10

FrameworkElement.Loaded事件

当元素布局、渲染完成并准备好与用户交互时发生。

编辑

或者,在更改DataSource后执行以下操作。这样,当应用程序处于空闲状态时,它会重置光标。

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

1
这看起来很有前途,但是似乎这个事件只在我的初始页面加载时触发,而不是当我想要更改或重新加载绑定到我的数据网格的可观察集合时触发。你知道我如何在更新集合时让它触发吗?我已经尝试重置ItemsSource和DataContext属性了。 - Drew Jex
是的 - 我把所有重新填充数据网格的代码都放在了 WaitCursor 中,但光标仍然太早回到默认状态了。 - Drew Jex
可能可以尝试这样做:Dispatcher.InvokeAsync(() => { System.Windows.Input.Mouse.OverrideCursor = null; }, DispatcherPriority.ApplicationIdle); - CharithJ
虽然我刚刚注意到有时光标会一直是等待光标,而其他时候则会很快地改变回来。如果我能弄清楚为什么有时会这样做,我会告诉你的。 - Drew Jex
啊 - 我相信它不一致是因为在我改变了ItemsSource之前,我进行了异步调用。我将它们改为同步调用,现在它总是有效的。 - Drew Jex
显示剩余2条评论

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