2012-09-24 61 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等)。

相關問題