WPF无需焦点即可接受输入

3
我在WPF中创建了一个屏幕,它可以接受条形码扫描仪的输入。我监听PreviewTextInput事件和KeyUp事件,这让我确定扫描仪“输入”的内容以及何时完成。它很好用,只需显示表单即可接受条形码扫描。
问题是,页面上还有其他控件,它们会导致问题。例如,当您在表单上按下按钮时,该按钮将获得焦点。从那时起,按Enter键将触发按钮事件处理程序。它不会自动放弃焦点。
有人知道解决这种问题的优雅方法吗?我不想在每个事件处理程序中添加代码来聚焦其他元素,但作为最后的手段,我会这样做。

扫描仪如何与输入控制相连? - Lazarus
它只是像键盘一样输入。 - Jason Young
3个回答

5

Button(其实是UIElement)有一个专门用于此目的的属性:UIElement.Focusable

如果您在xaml或代码中将其设置为false,则仍然可以单击按钮,但它不会从其他UI元素那里夺取焦点。


0

PreviewTextInput 事件可能会改变焦点(如果按钮具有焦点,则取消焦点),因此当条形码末尾的回车键按下时,按钮不会被按下。


0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接