2010-11-17 18 views
34

En la documentación oficial de Microsoft que sólo hay un párrafo que menciona cómo los controles se comportan al teclado (al menos lo que pude encontrar):¿Hay alguna referencia de comportamientos de teclado predeterminados para los controles de Silverlight 4?

http://msdn.microsoft.com/en-us/library/cc189015(v=VS.95).aspx#inputting_text

entrada de texto y controles

Ciertos controles reaccionan a eventos de teclado con su propio manejo. Por ejemplo, un TextBox es un control que está diseñado para capturar y luego representar visualmente el texto que se ingresó utilizando el teclado, y utiliza KeyUp y KeyDown en su propia lógica para capturar las pulsaciones de teclas, y luego también aumenta su propio evento TextChanged si el texto realmente cambiado En general, aún puede agregar controladores para KeyUp y KeyDown a un TextBox, o cualquier control relacionado que esté destinado a procesar el ingreso de texto. Sin embargo, como parte de su diseño previsto, un control puede no responder a todos los valores clave que se le envían a través de eventos clave. El comportamiento es específico de cada control. Como ejemplo, ButtonBase (clase base para Button) procesa KeyUp para que pueda verificar la barra ESPACIADORA o la tecla ENTER, que considera equivalente a un botón izquierdo del mouse para fines de generar un evento Click. Este proceso del evento se lleva a cabo mediante ButtonBase anulando el método virtual OnKeyUp, y en su implementación establece Handled = true. El resultado es que cualquier padre de un botón que esté escuchando un evento clave en el caso de una BARRA ESPACIADORA no recibiría el evento ya manejado para sus propios manejadores. Otro ejemplo es TextBox. Algunas teclas como las teclas de FLECHA no se consideran texto por TextBox y, en cambio, se consideran específicas para el comportamiento de la interfaz de usuario de control, y TextBox marca estos casos de eventos como manejados.

Los controles personalizados pueden implementar su propio comportamiento de sobrescritura para eventos clave anulando OnKeyDown/OnKeyUp. Si su control personalizado procesa teclas aceleradoras específicas, o tiene un comportamiento de control o enfoque similar al escenario descrito para TextBox, debe colocar esta lógica en sus propias anulaciones OnKeyDown/OnKeyUp.

¿Existe una referencia más completa en cualquier lugar?

Por ejemplo, en un AutoCompleteBox se puede navegar a las sugerencias presionando hacia arriba/abajo y elegir uno de pulsar ENTER, etc, etc

Seguramente debe haber una mejor manera de centrarse cada control único y presionando cada llave individual en la teclado para averiguar :)

+0

Tal vez esto ayudaría .... http: // www. dummies.com/how-to/content/silverlight-4-for-dummies-cheat-sheet.html – Aeonius

Respuesta

1

Busca en el código fuente \ Reflector.

Hay muchas peculiaridades en el procesamiento de textos de controles, dudo que a nadie le importe documentar esto. Por ejemplo, el evento KeyDown de TextBox no se activa cuando el usuario presiona BackSpace cuando hay texto dentro del control, pero se dispara cuando no hay texto, etc. La forma más rápida de descubrir cómo funciona algo es buscar en la fuente.

He calculado una buena regla: si por alguna razón necesitas saber cómo se comportará algún control es una situación no pierdas el tiempo tratando de codificar (reproducir) esta situación, solo consigue Reflector y mira el código fuente .

+0

Estoy marcando esto como una respuesta aceptada ya que hasta ahora esta es la forma más sólida, pero secretamente espero que haya al menos alguna referencia de origen público por ahí ... :) – dain

1

Aquí está el enlace para las ms oficiales atajos, se están agregando http://support.microsoft.com/kb/126449 Tthey a 8 para Windows http://www.itworld.com/software/203881/windows-8-metro-keyboard-shortcuts-and-tips esperanza esto ayuda

+0

Esto es casi :) Supongo que los controles de Silverlight tienen que seguir más o menos las pautas de diseño de Windows, así que es una buena idea, pero parece que esta referencia tiene más atajos de teclado globales y sobre todo combinaciones de teclas :( – dain

Cuestiones relacionadas