WPF等待光标与BackgroundWorker线程

问题描述:

我想显示沙漏光标,并禁用BackgroundWorker进程在另一个线程中运行时的窗口。WPF等待光标与BackgroundWorker线程

这是我在做什么:

Private Sub MyButton_Click(...) 
    Dim box As New AnotherWpfWindow() 
    box.Owner = Me 
    ... 
    box.ShowDialog() 
    If (box.DialogResult.GetValueOrDefault = True) Then 
     Me.IsEnabled = False 
     Me.Cursor = Cursors.Wait 
     MyBackgroundWorker.RunWorkerAsync() 
    End If 
End Sub 

Private Sub MyBackgroundWorker_RunWorkerCompleted(...) 
    UpdateInterface() 
    Me.IsEnabled = True 
    Me.Cursor = Cursors.Arrow 
End Sub 

的窗口变得禁用像我想要的,但光标保持一个箭头。我怎样才能让它等待光标?

它似乎根据这个问题的vg1890工作:Disabling all but one control in a WPF window

什么似乎是这里发生的是,WPF是忽略了光标残疾人窗口上进行设置。以下解决方法似乎工作:而不是禁用窗口本身,禁用窗口内容

C#:

((UIElement)Content).IsEnabled = false; 
Cursor = Cursors.Wait; 

// and in RunWorkerCompleted handler: 
((UIElement)Content).IsEnabled = true; 
Cursor = Cursors.Arrow; 

的Visual Basic:

DirectCast(Content, UIElement).IsEnabled = False 
Cursor = Cursors.Wait 

' and in RunWorkerCompleted handler:' 
DirectCast(Content, UIElement).IsEnabled = True 
Cursor = Cursors.Arrow 
+0

这样做。谢谢。 – 2009-04-21 12:55:31

另一种方法是全球更改光标,是..

Mouse.OverrideCursor = Cursors.Wait; 

//Do something 
//... 

Mouse.OverrideCursor = null;