我有一个带有许多文本框的WPF用户控件,它托管在WPF窗口中。 文本框当前没有绑定,但我无法输入任何文本框。
我在其中一个文本框的KeyDown事件中放了一个断点,它点击得很好,我可以看到我按下的键。
文本框声明为
<TextBox Grid.Row="3"
Grid.Column="4"
x:Name="PostcodeSearch"
Style="{StaticResource SearchTextBox}"
KeyDown="PostcodeSearch_KeyDown"/>
<TextBox Grid.Row="3"
Grid.Column="4"
x:Name="PostcodeSearch"
Style="{StaticResource SearchTextBox}"
KeyDown="PostcodeSearch_KeyDown"/>
该样式实现为
<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>
我希望我忽略了一些显而易见的事情。
编辑:我只添加了KeyDown和KeyUp事件,只是为了证明按键正在通过。我没有任何自定义功能。答案 0 :(得分:1)
如果您的PostcodeSearch_KeyDown方法(或事件链中文本框之前的任何其他人,也可能是Preview_KeyDown-Event中的某个父控件)设置e.Handled = true
(e为eventArgs),则事件将为不会传播给其他消费者(作为文本框),因此不会发生任何行动。
另一个原因可能是您的WPF-Window托管在WinForms-Application中,那么您需要调用
ElementHost.EnableModelessKeyboardInterop(YourWindow);
使键盘交互工作(google / bing for WPF WinForms InterOp获取完整解释)