(我的WPF代码实际上是在一个DLL中,正在被非CLR代码启动和交互,所以这不是一个标准的WPF应用程序。我从来没有在纯WPF应用程序中看到过这种行为,但我'我不确定问题是否与此有关)
如果我的视图模型在一段时间内快速变化,并且UI线程花费了大量时间来试图跟上它(我有几个转换器和一些复杂的布局,当VM更改时必须刷新,例如DataGrids在添加行时调整其列的大小等等。),自动显示等待光标(我猜测操作系统)我在代码或XAML中没有做任何改变光标的操作。当你在WPF中将光标设置为Cursors.Wait
时,它也不是同一个等待光标。它是箭头光标,但旁边有等待圈。
我宁愿这不要发生,因为程序不是真的“等待”。大多数事情都是在后台线程中进行的,UI线程只是花了很多时间来试图跟上它,但UI并没有反应。更令人讨厌的是,即使在应用程序(包括后台线程)变为空闲之后,此游标仍保持打开状态 - 直到鼠标移动为止。一旦鼠标移动它就会消失,但如果用户没有移动鼠标,他可能会无意中认为应用程序仍处于忙碌状态,而实际上它已完全闲置。
没有使用WPF功能设置光标的方法能够覆盖此光标。
答案 0 :(得分:0)
最后认为,一旦应用程序变为空闲,至少隐藏等待光标(但仅仅因为我的视图模型明确知道何时发生这种情况,在更复杂的情况下,VM可能不知道何时本身是'空闲' )
using System.Windows.Input;
...
Mouse.OverrideCursor = Cursors.Arrow;
Mouse.OverrideCursor = null;
但是我仍然希望首先摆脱这个等待光标,这不可能在没有离开Mouse.OverrideCursor = Cursors.Arrow
的情况下使用这种方法,这意味着光标在需要时永远不会改变(比如当chaing到ibeam时)将鼠标悬停在文本框等上。)