WPF接受无焦点的输入

时间:2009-09-29 15:43:34

标签: wpf focus barcode-scanner

我在WPF中创建了一个屏幕,接受来自条形码扫描仪的输入。我收听了PreviewTextInput事件和KeyUp事件,让我确定扫描仪“输入”的内容以及完成时间。它很棒。您只需要显示表单,它就会接受条形码扫描。

问题是,我在页面上有其他控件,并且它们会导致问题。例如,当您按下窗体上的按钮时,该按钮就会有焦点。从该点开始按Enter键会导致触发按钮事件处理程序。它不会自动放弃焦点。

有谁知道这种问题的优雅解决方案?我宁愿不为每个事件处理程序添加代码来聚焦另一个元素,但我会这样做作为最后的手段。

3 个答案:

答案 0 :(得分:4)

Button(实际上UIElement)具有此特定用途的属性:UIElement.Focusable

如果你在xaml或代码中将其设置为false,你仍然可以点击按钮,但它不会将焦点从其他UIElements上移开。

答案 1 :(得分:0)

PreviewTextInput事件可能会改变焦点(如果有按钮则会散焦),这样当条形码末尾的回车键点击时,按钮就不会被按下。

答案 2 :(得分:0)

我们只需设置按钮属性即可启用这些功能       接受按钮 - Button.IsDefault = "True"
      取消按钮 - Button.IsCancel = "True"