En la aplicación WPF actualmente estoy intentando vincular un comando para iniciar una herramienta de calculadora en cualquier lugar de la aplicación usando teclas de método abreviado, he creado un comando pero no obtengo cómo asignar comandos y teclas de método abreviado para crear teclas de método abreviado universales en mi aplicación. Gracias de antemano.Teclas de acceso directo a nivel de aplicación en WPF
Respuesta
Usted puede hacer esto en XAML - véase el ejemplo en la documentación de la clase KeyBinding:
<Window.InputBindings>
<KeyBinding Command="ApplicationCommands.Open"
Gesture="CTRL+R" />
</Window.InputBindings>
Actualización: Parece que en realidad no puede enlazar un KeyBinding a un modelo de vista XAML usando sólo si' re usando MVVM: mira aquí Keybinding a RelayCommand.
CommandManager quiere utilizar el control enfocado como punto de partida para enrutar todos los enlaces de entrada.
He escrito un Comportamiento que le permite vincular fácilmente teclas de atajo globales para cualquier control usando RoutedCommand (WPF estándar) e ICommand (estilo MVVM).
Hola, el enlace de descarga no funciona. ¿Podría actualizar esto con el enlace de trabajo? – Elangesh
En WPF con el fin de utilizar los atajos que hay que centrarse cada controlador. Sin embargo, con InputManager puede capturar todo tipo de entradas de su aplicación. Aquí no necesita tener foco en el controlador respectivo.
Primero tienes que subscribir el evento.
InputManager.Current.PreProcessInput -= Current_PreProcessInput;
InputManager.Current.PreProcessInput += Current_PreProcessInput;
Entonces,
private void Current_PreProcessInput(object sender, PreProcessInputEventArgs args)
{
try
{
if (args != null && args.StagingItem != null && args.StagingItem.Input != null)
{
InputEventArgs inputEvent = args.StagingItem.Input;
if (inputEvent is KeyboardEventArgs)
{
KeyboardEventArgs k = inputEvent as KeyboardEventArgs;
RoutedEvent r = k.RoutedEvent;
KeyEventArgs keyEvent = k as KeyEventArgs;
if (r == Keyboard.KeyDownEvent)
{
}
if (r == Keyboard.KeyUpEvent)
{
}
}
}
}
catch (Exception ex)
{
}
}
como no se puede filtrar todo el material no deseado y obtener la entrada requerida. Como se trata de una aplicación de captura de atajos, solo tomé el evento KeyDown y KeyUp.
También puede obtener todos los detalles de la tecla que se presiona
keyEvent.Key.ToString()
- 1. Teclas de acceso directo Resharper
- 2. Teclas de acceso de menú en WPF
- 3. Asignar tecla de acceso directo a un botón en WPF
- 4. Desactivar decir, las teclas de acceso directo en el WebBrowser controla
- 5. Acceso directo a eventos de teclado en OSX
- 6. Crear acceso directo a la aplicación en un directorio
- 7. Tecla de acceso directo usando C#
- 8. Acceso directo a memoria en Linux
- 9. cómo detectar cuando una tecla de acceso directo (tecla de acceso directo) se presiona
- 10. Localizar en solución acceso directo a ReSharper
- 11. Acceso directo a Eclipse para ejecutar archivos de inicio
- 12. Sinergia entre las teclas de acceso directo de mac y pc mac
- 13. Acceso directo a linux framebuffer - copyarea
- 14. cómo implementar la combinación de teclas de acceso directo de CTRL o MAYÚS + <letter> a través de javascript?
- 15. Acceso de cliente directo SimpleDB
- 16. IntelliJ IDEA mapa de teclas de acceso directo para hacer coincidir corsé
- 17. ReSharper acceso directo string.format
- 18. Crear un acceso directo para cualquier aplicación en el escritorio
- 19. teclas de acceso rápido globales en Java
- 20. Acceso directo nulo en Delphi
- 21. Responder a la "tecla de acceso directo" de toda la aplicación en Qt
- 22. Acceso directo a los problemas JNLP
- 23. Acceso directo a valores de diccionario anidados en Objective-C
- 24. de acceso directo para iniciar una actividad
- 25. tecla de acceso directo a la tecla de aplicación de C# de Windows
- 26. Las teclas y pestañas Alt no funcionan en Windows Forms abierto desde una aplicación WPF
- 27. C++ plantilla de macro de acceso directo
- 28. Las teclas de acceso en ASP.NET MVC
- 29. ¿Cómo puedo manejar una tecla de acceso directo en cada ventana de WPF?
- 30. denegar el acceso directo a presentar en S3
¿Quiere decir XAML en lugar de MXML? Creo que MXML es para Flex. – Andy
Vaya, sí, lo hago! ¡Demasiadas tecnologías en mi cabeza! Reparado, gracias. – Grokys