2012-09-24 25 views
0

(我的WPF代码实际上是在一个DLL中,并且正在启动并且与非CLR代码交互,所以这不是一个标准的WPF应用程序。在纯WPF应用程序中看到了这种行为,但我不确定问题是否与该问题有关)即使在应用程序闲置之前等待光标仍然卡住,直到移动鼠标

如果我的视图模型在一段时间内快速变化并且UI线程正在花费一段时间大量的时间试图跟上它(我有几个转换器和一些复杂的布局,当虚拟机发生变化时必须刷新,例如DataGrids在添加行时调整其列的大小等),等待光标会自动显示(通过操作系统我猜)我在我的代码或XAML中没有做任何改变光标。当您在WPF中将光标设置为Cursors.Wait时,它与您获得的等待游标也不同。这是箭头光标,但它旁边有一个等待圆。

我宁愿不要发生这种情况,因为该程序并不真正“等待”。大多数情况都是在后台线程中进行的,UI线程只是花费大量的时间来跟上它,但是UI并没有反应。更令人讨厌的是,即使在应用程序(包括后台线程)变为空闲之后,该游标仍然保持运行 - 直到移动鼠标。只要鼠标移动就会消失,但如果用户不移动鼠标,他可能会不经意地认为应用程序仍处于忙碌状态,实际上它完全处于闲置状态。

用WPF函数设置游标的方式都不能覆盖这个游标。

回答

0

最后计算出它至少在应用程序变得空闲时隐藏等待游标(但仅仅是因为我的视图模型明确知道这种情况何时发生,在更复杂的情况下,VM本身“闲置”时可能不知道“)

using System.Windows.Input; 

... 

Mouse.OverrideCursor = Cursors.Arrow; 
Mouse.OverrideCursor = null; 

但我还是想摆在首位,这是不可能用这种方法不留Mouse.OverrideCursor = Cursors.Arrow集,这意味着光标从来没有当它需要(如chaing的变化摆脱这种等待光标当徘徊在文本框上时,ibeam等)。

相关问题