2010-07-29 10 views
8

En caso de ser simple, pero no puedo encontrar la manera de hacerlo. Usando WPF4 Quiero Enlazar Ctrl +- para alejar y Ctrl += para hacer un zoom:KeyGestures WPF - Binding teclas no alfanuméricos

<KeyBinding Command="{Binding Content.ZoomInCommand}" Gesture="Ctrl+="/> 
    <KeyBinding Command="{Binding Content.ZoomOutCommand}" Gesture="Ctrl+-"/> 

Sin embargo, estoy recibiendo errores: en el caso de Ctrl + =:

valor solicitado '=' no se encontró.

¿Alguna idea?

Respuesta

8

bien - resulta que la clave = no existe (se puede comprobar esto a través de la Key -enumeration - no hay ninguna entrada para la Igualdad o EqualSign) ... Yo uso un teclado internacional , por lo que debe buscar la secuencia de teclas que acierte para ingresar = (para mí es Shift + D0 en un teclado danés) - y use esa secuencia de teclas.

Así que su XAML debe ser (en Dinamarca):

<KeyBinding Command="{Binding Content.ZoomInCommand}" Gesture="Ctrl+Shift+D0"/> 

EDIT: Creo en un sistema americano es la clave OemPlus - pero se puede comprobar por la consola writeline'ing el argumento de e.Key un manejador de eventos de teclados)

EDIT2: la clave - es OemMinus en mi sistema.

+0

y espero que no se va a internacionalizar su solicitud ... :-) – Goblin

+1

Gracias! Mirar en el evento Keydown fue el camino a seguir. Lo que buscaba era "Ctrl + OemPlus" y "Ctrl + OemMinus". ¡Me preocuparé por la internacionalización más tarde! – Grokys

+0

1 para "se puede comprobar por la consola writeline'ing el argumento e.Key en un controlador de eventos clave hacia abajo" para mí fue clave = "Añadir" –

8

Indirecta para los usuarios con una teclado alemán (tal vez algunos otros países también):

Las teclas del teclado numérico "+" y "-" son "Añadir" y "sustraer"

El normales teclas "+" y "-" son "OemPlus" y "OemMinus"

Así

<KeyBinding Gesture = "OemPlus" Command="myCommand" /> 

dispararán el comando si se pulsa "+" en la ke principal yboard.