Silverlight 4, события колеса мыши и без окон

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

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

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

Ответ 1

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

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

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

Ответ 2

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