2010-06-22 69 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(),但当然,注释掉它也行得通。