Kolumne XAML Expertise: WPF und Windows-Apps

XAML-Tipp: WPF – Virtuelle Tastatur einblenden
Kommentare

In der Kolumne „XAML Expertise“ präsentiert Gregor Biswanger nun schon seit fünf Jahren Top-How-tos zum Thema XAML. Einsteiger und fortgeschrittene XAML-Experten sollen hier durch geballtes Wissen gesättigt werden. Heute gibt es folgende Expertise: „WPF: Virtuelle Tastatur einblenden“.

Anders als erwartet, wird bei einem Touch innerhalb einer WPF-Anwendung keine virtuelle Tastatur aktiv. Ein unschöner Aspekt, denn ein Touchsupport mag aus unterschiedlichen Gründen sinnvoll sein. Zum einen wird seit Windows 8 auf moderner Hardware ein Touchbildschirm mitgeliefert und selbst auf dem Desktop immer wieder benutzt. Ein weiterer Grund wäre eine WPF-Anwendung mit Touchsupport für Kiosk-Mode-Szenarien.

WPF: Virtuelle Tastatur einblenden

Für dieses Problem gibt es auch wieder unterschiedliche Lösungen. Die meisten beruhen darauf, dass die TextBox-Steuerelemente mit dem GotFocus– und LostFocus-Event abgefangen werden und direkt die EXE-Datei der virtuellen Windows-Tastatur gestartet wird (C:\Program Files\Common Files\Microsoft Shared\Ink\TabTip.exe). Das sorgt wieder für viele Zeilen Code, die unser Projekt nur unnötig aufblähen. Alternativ könnte man dazu eigene Fassaden für die TextBox-Steuerelemente bauen oder auch eigene Expression Blend Behaviors anfertigen. Am Ende wird der Code aber nicht unbedingt schöner.

Eine komfortable Lösung bietet die Open-Source-Library WPFTabTip, die direkt über NuGet bereitgestellt wird. Die Installation erfolgt wie gewohnt mit der Package Manager Console: PM> Install-Package WPFTabTip. Anschließend wird im Start-up-Code, zum Beispiel innerhalb der App.xaml.cs- oder der Code-Behind-Datei, die Erweiterung instanziiert. Das erfolgt nicht wie gewohnt mit dem New-Operator, sondern über eine BindTo-Methode. Dieser gibt man beliebige Klassen von Steuerelementen mit, die automatisch auf deren Fokusevents lauschen. WPFTabTip löst dann wie oben beschrieben die TabTip.exe aus.

Ein Standardverhalten von WPFTabTip ist, dass die Library erst aktiv wird, wenn keine Tastatur am System gefunden wird. Um dieses Verhalten zu deaktivieren, wird der IgnoreHardwareKeyboard Property zusätzlich der Wert HardwareKeyboardIgnoreOptions.IgnoreAll zugewiesen. Der gesamte Code, um auf TextBox-Steuerelemente zu lauschen und trotz vorhandener Tastatur die virtuelle Tastatur zu öffnen, steht in Listing 1. Abbildung 1 zeigt, wie die virtuelle Tastatur bei einem Klick innerhalb der TextBox geöffnet wird.

{
InitializeComponent();

TabTipAutomation.IgnoreHardwareKeyboard = HardwareKeyboardIgnoreOptions.IgnoreAll;
TabTipAutomation.BindTo();
}

Abb. 1: Die virtuelle Tastatur öffnen

 

Windows Developer

Windows DeveloperDieser Artikel ist im Windows Developer erschienen. Windows Developer informiert umfassend und herstellerneutral über neue Trends und Möglichkeiten der Software- und Systementwicklung rund um Microsoft-Technologien.

Natürlich können Sie den Windows Developer über den entwickler.kiosk auch digital im Browser oder auf Ihren Android- und iOS-Devices lesen. In unserem Shop ist der Windows Developer ferner im Abonnement oder als Einzelheft erhältlich.

 

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -