Работая над приложением TouchScreen, к которому также подключена клавиатура, у меня возникает следующая проблема:
Окно WPF имеет TextBox, который должен получать ВСЕ ввод с клавиатуры. Есть также кнопки и ListBox, которые используются только сенсорным экраном (= мышь).
Очень простой пример выглядит так:
<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>
Чтобы держать TextBox всегда сфокусированным, я просто делаю:
private void TextBox_PreviewLostKeyboardFocus(object sender, System.Windows.Input.KeyboardFocusChangedEventArgs e)
{
e.Handled = true;
}
Пока все хорошо - проблема в том, что я больше не могу выбирать элементы из списка. Кажется, это работает, только если ListBox имеет фокус клавиатуры. Но если я потеряю фокус клавиатуры на TextBox, я больше не смогу вводить текст, не щелкнув его сначала.
Любые идеи, комментарии, предложения приветствуются!