Travailler sur une application tactile qui dispose également d'un clavier attaché, j'ai le problème suivant:Garder le focus clavier sur un contrôle unique tout en beeing capable d'utiliser un ListBox
La fenêtre WPF a une zone de texte, qui devrait recevoir TOUTES les entrées au clavier. Il y a aussi des boutons et un ListBox, qui sont uniquement utilisés par TouchScreen (= Mouse).
Un exemple très simple ressemble à ceci:
<Window x:Class="KeyboardFocusTest.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1">
<StackPanel>
<TextBox Text="{Binding Input, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
PreviewLostKeyboardFocus="TextBox_PreviewLostKeyboardFocus"/>
<Button Click="Button_Click">Add</Button>
<ListBox ItemsSource="{Binding Strings}" />
</StackPanel>
</Window>
Pour garder le TextBox toujours concentré, je fais juste:
private void TextBox_PreviewLostKeyboardFocus(object sender, System.Windows.Input.KeyboardFocusChangedEventArgs e)
{
e.Handled = true;
}
Jusqu'à présent, si bien - le problème est maintenant que je peux Ne sélectionnez plus les éléments de la ListBox. Cela semble seulement fonctionner, si le ListBox a le focus de clavier. Mais si je perds le focus du clavier sur la TextBox, je ne peux plus entrer de texte sans cliquer dessus en premier.
Toutes les idées, suggestions de commentaires sont les bienvenues!
Cela fonctionne, mais ce n'est pas facile à faire d'une manière réutilisable (= extension de balisage). Voir mon approche de ce problème en utilisant votre suggestion ci-dessous. –