Silverlight 4, события колесика мыши и режим без окон - PullRequest
11 голосов
/ 20 апреля 2010

У меня есть приложение Silverlight 4, которое значительно выигрывает от поддержки встроенного колеса мыши для ряда элементов управления. Страница, на которой размещено приложение, имеет раскрывающееся меню на основе HTML, которое обычно перекрывает элемент управления Silverlight.

В IE мне нужно включить безоконный режим, чтобы наложение меню работало корректно (Firefox 3.6 без него работает нормально). Однако включение режима без окон запрещает Firefox поддерживать события колеса мыши без дополнительного кодирования вокруг моста HTML DOM.

Можно ли как-то определить, какие браузеры будут требовать без окон, а какие будут работать без него? В идеале я хотел бы использовать информацию HttpBrowserCapabilities, чтобы решить, следует ли установить для свойства значение true, а не жестко задавать список «поддерживаемых» браузеров.

Ответы [ 2 ]

2 голосов
/ 17 марта 2011

Silverlight 4 имеет поддержку событий колесика мыши, но есть ряд правил, о которых следует знать:

  1. IE никогда не является проблемой
  2. События Mousewheel никогда не работают на OS X вне браузера, а только через HTML DOM в браузере.
  3. Windowsless во всех других браузерах не допускается, потому что они используют NPAPI для обработки событий.
  4. Вы можете получить колесо мыши с функциями взаимодействия с браузером, чтобы добраться до колеса мыши из DOM, как вы заметили.
  5. HTML DOM никогда не будет работать при полном экране

Для полной разбивки см. http://msdn.microsoft.com/en-us/library/dd759034(v=vs.95).aspx.

0 голосов
/ 04 января 2011

Может быть, вы могли бы использовать свой собственный одноэлементный класс MouseWehhenManager, который внутренне рассматривает как события DOM, так и MouseWheelAPI и предоставляет их общим способом, чтобы ваш код мог использовать этот единственный интерфейс, который работает в любом случае?

...