wpf
Optimización para la interacción táctil
Buscar..
Mostrando teclado táctil en Windows 8 y Windows 10
Aplicaciones WPF dirigidas a .NET Framework 4.6.2 y posteriores
Con las aplicaciones de WPF dirigidas a .NET Framework 4.6.2 (y posteriores), el teclado virtual se invoca y cierra automáticamente sin que sea necesario realizar ningún paso adicional.
Aplicaciones WPF dirigidas a .NET Framework 4.6.1 y anteriores
WPF no está habilitado principalmente para tocar, lo que significa que cuando el usuario interactúa con una aplicación de WPF en el escritorio, la aplicación no mostrará automáticamente el teclado cuando los controles de TextBox
reciben el enfoque. Este es un comportamiento inconveniente para los usuarios de tabletas, obligándolos a abrir manualmente el teclado táctil a través de la barra de tareas del sistema.
Solución
El teclado táctil es en realidad una aplicación exe
clásica que se puede encontrar en cada PC con Windows 8 y Windows 10 en la siguiente ruta: C:\Program Files\Common Files\Microsoft Shared\Ink\TabTip.exe
.
En base a este conocimiento, puede crear un control personalizado derivado de TextBox
, que escucha el evento GotTouchCapture
(este evento se llama cuando el control se enfoca al tocar) e inicia el proceso del teclado táctil .
public class TouchEnabledTextBox : TextBox
{
public TouchEnabledTextBox()
{
this.GotTouchCapture += TouchEnabledTextBox_GotTouchCapture;
}
private void TouchEnabledTextBox_GotTouchCapture(
object sender,
System.Windows.Input.TouchEventArgs e )
{
string touchKeyboardPath =
@"C:\Program Files\Common Files\Microsoft Shared\Ink\TabTip.exe";
Process.Start( touchKeyboardPath );
}
}
Puede mejorar esto aún más si almacena en caché el proceso creado y luego lo mata después de que el control pierda el foco:
//added field
private Process _touchKeyboardProcess = null;
//replace Process.Start line from the previous listing with
_touchKeyboardProcess = Process.Start( touchKeyboardPath );
Ahora puedes conectar el evento LostFocus
:
//add this at the end of TouchEnabledTextBox's constructor
this.LostFocus += TouchEnabledTextBox_LostFocus;
//add this method as a member method of the class
private void TouchEnabledTextBox_LostFocus( object sender, RoutedEventArgs eventArgs ){
if ( _touchKeyboardProcess != null )
{
_touchKeyboardProcess.Kill();
//nullify the instance pointing to the now-invalid process
_touchKeyboardProcess = null;
}
}
Nota sobre el modo tableta en Windows 10
Windows 10 introdujo un modo de tableta , que simplifica la interacción con el sistema cuando se usa la PC de manera táctil. Este modo, aparte de otras mejoras, garantiza que el teclado táctil se muestre automáticamente incluso para las aplicaciones de escritorio clásicas, incluidas las aplicaciones WPF.
Enfoque de configuración de Windows 10
Además del modo tableta, Windows 10 puede mostrar automáticamente el teclado táctil para aplicaciones clásicas incluso fuera del modo tableta. Este comportamiento, que está deshabilitado de forma predeterminada, se puede habilitar en la aplicación Configuración.
En la aplicación Configuración , vaya a la categoría Dispositivos y seleccione Escritura . Si se desplaza completamente hacia abajo, puede encontrar la opción "Mostrar el teclado táctil o el panel de escritura a mano cuando no está en el modo de tableta y no hay ningún teclado conectado", que pueda habilitar.
Cabe mencionar que esta configuración solo es visible en dispositivos con capacidades táctiles.