带文本框的WPF Usercontrol

时间:2009-07-10 06:41:22

标签: wpf textbox user-controls

我有一个带有许多文本框的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事件,只是为了证明按键正在通过。我没有任何自定义功能。

1 个答案:

答案 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获取完整解释)