Silverlight 4, eventos da roda do mouse e modo sem janela
-
28-09-2019 - |
Pergunta
Eu tenho um aplicativo Silverlight 4 que se beneficia muito com o suporte à roda do mouse nativo para vários controles. A página que hospeda o aplicativo possui um menu suspenso HTML acionado por HTML que normalmente sobreporia o controle do Silverlight.
No IE, tenho que ativar o modo sem janela para permitir que o menu de sobreposição funcione corretamente (o Firefox 3.6 funciona normalmente sem ele). No entanto, ativar o modo sem janela impede o Firefox de apoiar eventos da roda do mouse sem codificação adicional ao redor da ponte html dom.
Existe alguma maneira de saber quais navegadores exigirão sem janelas e quais funcionarão sem ele? Idealmente, eu gostaria de usar as informações HTTPBrowSerCabitities para decidir se definir ou não a propriedade como True, em vez de codificar uma lista de navegadores 'suportados'.
Solução
O Silverlight 4 tem suporte para eventos de roda do mouse, mas há várias regras a serem cientes de:
- Ou seja, nunca é um problema
- Os eventos do Mouse Wheel nunca funcionam no OS X fora do navegador, e apenas através do html DOM no navegador.
- Sem janelas em todos os outros navegadores é um não-go, porque eles confiam Npapi para lidar com eventos.
- Você pode obter a roda do mouse com os recursos de interoperabilidade do navegador para chegar à roda do mouse do DOM como você observou.
- HTML DOM nunca funcionará quando a tela cheia
Para um colapso completo, veja http://msdn.microsoft.com/en-us/library/dd759034(v=vs.95).aspx.
Outras dicas
Talvez você possa usar sua própria classe Singleton Mousewehhenmanager que considera internamente os eventos DOM e Mousewheelapi e os fornece de uma maneira comum, para que seu código possa usar essa interface única que funcione de qualquer maneira?