Suche…


Zeigen Sie die Touch-Tastatur unter Windows 8 und Windows 10 an

WPF-Apps für .NET Framework 4.6.2 und höher

Bei WPF-Apps, die auf .NET Framework 4.6.2 (und höher) abzielen, wird die Softtastatur automatisch aufgerufen und ohne zusätzliche Schritte verworfen.

WPF-Softtastaturunterstützung mit .NET Framework 4.6.2

WPF-Apps für .NET Framework 4.6.1 und früher

WPF ist nicht in erster Linie berührungsaktiviert. Wenn der Benutzer mit einer WPF-Anwendung auf dem Desktop interagiert, zeigt die App die Touch-Tastatur nicht automatisch an, wenn die TextBox Steuerelemente den Fokus erhalten. Dies ist für Benutzer von Tablets ein unbequemes Verhalten, das sie dazu zwingt, die Touch-Tastatur manuell über die System-Taskleiste zu öffnen.

Berühren Sie die Tastatur in Windows

Problemumgehung

Die Touch-Tastatur ist eigentlich eine klassische exe Anwendung, die auf jedem Windows 8- und Windows 10-PC unter dem folgenden Pfad zu finden ist: C:\Program Files\Common Files\Microsoft Shared\Ink\TabTip.exe .

Basierend auf diesem Wissen können Sie ein benutzerdefiniertes Steuerelement TextBox , das von TextBox abgeleitet TextBox , das das GotTouchCapture Ereignis GotTouchCapture (dieses Ereignis wird aufgerufen, wenn das Steuerelement durch Berührung den Fokus erhält) und den Prozess der Berührungstastatur startet .

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 );
    }
}

Sie können dies noch verbessern, indem Sie den erstellten Prozess zwischenspeichern und anschließend beenden, nachdem das Steuerelement den Fokus verliert:

//added field
private Process _touchKeyboardProcess = null;
 
//replace Process.Start line from the previous listing with
_touchKeyboardProcess = Process.Start( touchKeyboardPath );

Jetzt können Sie das LostFocus Ereignis verbinden:

//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;
   }
}

Hinweis zum Tablet-Modus in Windows 10

Windows 10 hat einen Tablet-Modus eingeführt , der die Interaktion mit dem System vereinfacht, wenn der PC mit der Touch-first-Methode verwendet wird. Dieser Modus stellt neben anderen Verbesserungen sicher, dass die Touch-Tastatur auch für klassische Desktop-Apps einschließlich WPF-Apps automatisch angezeigt wird .

Ansatz für Windows 10-Einstellungen

Zusätzlich zum Tablet-Modus kann Windows 10 die Touch-Tastatur für klassische Apps auch außerhalb des Tablet-Modus automatisch anzeigen. Dieses Verhalten, das standardmäßig deaktiviert ist, kann in der App Einstellungen aktiviert werden.

Wechseln Sie in der App Einstellungen zu der Kategorie Geräte und wählen Sie Eingabe . Wenn Sie ganz nach unten scrollen, finden Sie die Einstellung "Touch-Tastatur oder Handschriftfeld anzeigen, wenn sich der Tablet-Modus nicht befindet und keine Tastatur angeschlossen ist", die Sie aktivieren können.

Berühren Sie die Tastatureinstellung

Es ist erwähnenswert, dass diese Einstellung nur auf Geräten mit Touch-Funktion sichtbar ist.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow