2010-04-20 13 views
11

Tengo una aplicación Silverlight 4 que se beneficia enormemente del soporte nativo de la rueda del mouse para una serie de controles. La página que aloja la aplicación tiene un menú desplegable basado en HTML que normalmente se superpondrá al control de Silverlight.Silverlight 4, eventos de la rueda del mouse y modo sin ventana

En IE, tengo que habilitar el modo sin ventana para permitir que el menú de superposición funcione correctamente (Firefox 3.6 funciona normalmente sin él). Sin embargo, habilitar el modo sin ventana prevents Firefox from supporting mouse wheel events sin codificación adicional alrededor del puente HTML DOM.

¿Hay alguna manera de saber qué navegadores necesitarán sin ventana y cuáles funcionarán sin él? Idealmente, me gustaría utilizar la información HttpBrowserCapabilities para decidir si establecer o no la propiedad en verdadero, en lugar de codificar una lista de navegadores 'compatibles'.

+0

¿Alguna vez descubrió esto? Tengo el mismo problema. –

+0

Lamentablemente, no. Al final, implementé cierta lógica en el back-end para hacerlo basado en el navegador. Todavía me gustaría saber si hay una forma "correcta" de hacerlo. –

Respuesta

2

Silverlight 4 tiene soporte para eventos de rueda del ratón, pero hay una serie de reglas a tener en cuenta:

  1. IE no es un problema eventos
  2. mouseWheel nunca funcionan en OS X fuera del navegador, y solo a través de HTML DOM en el navegador.
  3. Sin Windows en todos los demás navegadores es un no-go porque confían en NPAPI para manejar eventos.
  4. Puede obtener la rueda del mouse con las características de interoperabilidad del navegador para llegar a la rueda del mouse desde el DOM como anotó.
  5. HTML DOM no va a funcionar cuando está llena la pantalla

Para ver un desglose completo http://msdn.microsoft.com/en-us/library/dd759034(v=vs.95).aspx.

0

Tal vez podría utilizar su propia clase singleton MouseWehhenManager que considera internamente los eventos DOM y MouseWheelAPI y los proporciona de una manera común, para que su código pueda usar esta única interfaz que funciona de cualquier manera.

Cuestiones relacionadas