2010-06-22 49 views
1

我有一個包含圖像的列表框。我正在捕捉MouseMove。在IE8中,在FF(Win7 & OSX)&中,只要將鼠標移動到圖像上,就會觸發。然而,在Chrome(在OSX上),它只會在按下鼠標按鈕時觸發。這種Chrome行爲實際上會非常有用,但前提是我可以控制它,而不是在某些瀏覽器上隨機發生。那麼是否有人知道是否有一些總體設置讓Chrome在這種情況下表現出來,還是僅僅是SL實現中的不一致? 我懷疑後者,因爲我從來沒有能夠找到SL的方式來測試鼠標按鈕是否關閉。Silverlight MouseMove瀏覽器與FF/IE的不一致性

感謝您的任何幫助。

+0

Silverlight 3或4? – 2010-06-22 08:05:00

+0

順便說一句,直到Silverlight 4.0才支持Chrome瀏覽器 – 2010-06-22 08:05:47

+0

如果您只想檢查鼠標是否關閉,只需在MouseLeftButtonDown事件上設置一個標誌,並在MouseLeftButtonUp事件中取消設置該標誌,標誌未設置,則忽略「MouseMove」事件。 – Stephan 2010-06-22 16:12:16

回答

0

據我所知,問題是MouseMove,當鼠標左鍵關閉時,MouseEnter和MouseLeave事件不會被觸發。

我有與TextBox相同的問題。其實它也發生在IE瀏覽器,我的谷歌搜索告訴我這是如此的設計。進一步的谷歌搜索揭示了原因:該元素捕獲鼠標使用CaptureMouse()方法。所以我剛剛從文本框派生,並推翻的OnMouseMove(...)方法:

protected override void OnMouseMove(MouseEventArgs e) 
{ 
    base.OnMouseMove(e); 
    ReleaseMouseCapture(); 
} 

注:我不知道,是否捕捉鼠標是唯一這種方法的基本實現呢,所以我在調用它之後添加了ReleaseMouseCapture(),但當然,註釋掉它也行得通。