WPF Usercontrol с текстовыми полями - PullRequest
0 голосов
/ 10 июля 2009

У меня есть пользовательский элемент управления WPF с несколькими текстовыми полями, он находится в окне WPF. Текстовые поля в настоящее время не связаны, но я не могу набрать ни один из них.

Я установил точку останова в событии KeyDown одного из текстовых полей, и он поразил его, и я могу видеть нажатую клавишу.

Текстовые поля объявлены как </p> <pre><code> <TextBox Grid.Row="3" Grid.Column="4" x:Name="PostcodeSearch" Style="{StaticResource SearchTextBox}" KeyDown="PostcodeSearch_KeyDown"/>

Стиль реализован как

</p> <pre><code><Style x:Key="SearchTextBox" TargetType="{x:Type TextBox}"> <Setter Property="Control.Margin" Value="2"/> <Setter Property="Height" Value="20"/> <Setter Property="Width" Value="140"/> <Setter Property="HorizontalAlignment" Value="Left"/> </Style>

Я надеюсь, что упустил что-то очевидное.

EDIT: я только добавил события KeyDown и KeyUp только для того, чтобы доказать, что нажатия клавиш проходили. У меня нет пользовательских функций.

1 Ответ

1 голос
/ 15 июля 2009

Если ваш метод PostcodeSearch_KeyDown (или кто-либо еще до текстового поля в цепочке событий, также может быть некоторым родительским элементом управления в Preview_KeyDown-Event) устанавливает e.Handled = true (например, eventArgs), событие не будет распространяются на других потребителей (как текстовое поле) и, таким образом, никаких действий не происходит.

Другая причина может заключаться в том, что ваше WPF-окно размещено в WinForms-приложении, тогда вам нужно будет вызвать

ElementHost.EnableModelessKeyboardInterop(YourWindow);

Чтобы заставить работать взаимодействие с клавиатурой (полное объяснение в google / bing для WPF WinForms InterOp)

...