wpf
Optimisation pour l'interaction tactile
Recherche…
Affichage du clavier tactile sous Windows 8 et Windows 10
Applications WPF ciblant .NET Framework 4.6.2 et versions ultérieures
Avec les applications WPF ciblant .NET Framework 4.6.2 (et versions ultérieures), le clavier logiciel est automatiquement appelé et supprimé sans aucune étape supplémentaire.
Applications WPF ciblant .NET Framework 4.6.1 et versions antérieures
WPF n'est pas principalement activé par le toucher, ce qui signifie que lorsque l'utilisateur interagit avec une application WPF sur le bureau, l'application n'affichera pas automatiquement le clavier tactile lorsque les contrôles TextBox
recevront le focus. Il s’agit d’un comportement peu pratique pour les utilisateurs de tablettes, les obligeant à ouvrir manuellement le clavier tactile via la barre des tâches du système.
solution de contournement
Le clavier tactile est en fait une application exe
classique qui peut être trouvée sur chaque ordinateur Windows 8 et Windows 10 sur le chemin suivant: C:\Program Files\Common Files\Microsoft Shared\Ink\TabTip.exe
.
Sur la base de ces connaissances, vous pouvez créer un contrôle personnalisé dérivé de TextBox
, qui écoute l'événement GotTouchCapture
(cet événement est appelé lorsque le contrôle obtient le focus à l'aide du toucher) et démarre le processus du clavier tactile .
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 );
}
}
Vous pouvez encore améliorer cela en mettant en cache le processus créé et en le tuant après que le contrôle ait perdu le focus:
//added field
private Process _touchKeyboardProcess = null;
//replace Process.Start line from the previous listing with
_touchKeyboardProcess = Process.Start( touchKeyboardPath );
Vous pouvez maintenant LostFocus
événement 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;
}
}
Remarque sur le mode tablette dans Windows 10
Windows 10 a introduit un mode tablette , ce qui simplifie l’interaction avec le système lors de l’utilisation du PC en mode tactile. Outre les autres améliorations, ce mode garantit que le clavier tactile est automatiquement affiché, même pour les applications de bureau classiques, y compris les applications WPF.
Approche des paramètres Windows 10
Outre le mode tablette, Windows 10 peut afficher automatiquement le clavier tactile pour les applications classiques, même en dehors du mode tablette. Ce comportement, qui est désactivé par défaut, peut être activé dans l'application Paramètres.
Dans l'application Paramètres , accédez à la catégorie Périphériques et sélectionnez Saisie . Si vous faites défiler complètement, vous pouvez sélectionner le paramètre "Afficher le clavier tactile ou le panneau d'écriture lorsque le mode n'est pas en mode tablette et qu'il n'y a pas de clavier connecté", que vous pouvez activer.
Il est à noter que ce paramètre est uniquement visible sur les appareils dotés de fonctions tactiles.