2010-06-22 2 views
1

У меня есть список с изображениями. Я забираю MouseMove. В FF (Win7 & OSX) & также в IE8 это срабатывает всякий раз, когда мышь перемещается по изображениям. Однако в Chrome (в OSX) он срабатывает только при нажатии кнопки мыши. Это поведение Chrome на самом деле было бы весьма полезным, но только если бы я мог контролировать его, а не просто случайным образом в некоторых браузерах. Так кто-нибудь знает, есть ли какие-то общие настройки где-то, что заставляет его вести себя так в Chrome, или это просто несогласованность в реализациях SL? Я подозреваю, что последнее, так как я никогда не мог найти способ в SL тестирования, выключена ли кнопка мыши.Несоответствие Silverlight MouseMove для Chrome против FF/IE

Спасибо за любую помощь.

+0

Silverlight 3 или 4? –

+0

, кстати, Chrome не поддерживается должным образом до тех пор, пока Silverlight 4.0 –

+0

Если вы хотите только проверить, когда мышь, просто установите флаг в событии 'MouseLeftButtonDown' и отмените его на событии' MouseLeftButtonUp', и если флаг не установлен, игнорируйте событие «MouseMove». – Stephan

ответ

0

Насколько я понимаю, проблема в MouseMove, MouseEnter и MouseLeave не запускаются, когда кнопка мыши остается нажатой.

У меня была такая же проблема с TextBox. На самом деле это произошло и в IE, и мой googling сказал мне, что это так по дизайну. Дальнейший поиск в Google показал причину: элемент захватывает мышь, используя метод CaptureMouse(). Так что я только что полученный из TextBox и отменяют OnMouseMove (...) метод:

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

Примечание: Я не уверен, является ли захват мыши единственное основание реализации этого метода делает, так Я добавил ReleaseMouseCapture() после его вызова, но комментирование также работает, конечно.

Смежные вопросы