我有一个带有数据网格的 WPF 窗口。我试图从符号扫描仪中捕获通过虚拟楔形发送的字符串。对于应用程序,它看起来像是输入了字符。此字符串以 ASCII 1 (SOH) 开头。
当窗口具有焦点时,窗口的 PreviewTextInput 会接收 SOH 以及所有其他人类可读和非人类可读的值。 但是,当数据网格具有焦点时,非人类可读的字符将被剥离。
如果我在窗口上有一个 PreviewKeyDown 或 PreviewKeyUp ,那么无论什么有焦点,字符都会正确显示。因此,数据网格在某处将其剥离。不幸的是,因为 KeyDown/KeyUp 不显示 ASCII 字符,所以我不能使用这些事件,而不必编写某种解析算法。
谁能告诉我我能做些什么来让那些非人类可读的控制字符总是被发送到 PreviewTextInput?或者如何解析 PreviewKeyDown 中的所有字符?
编辑:
当窗口有焦点时:
Window PreviewKeyDown - LeftCtrl
Window PreviewKeyDown - A
Window PreviewTextInput - <SOH>
Window PreviewKeyDown - Oem6
Window PreviewTextInput - ]
Window PreviewKeyDown - LeftShift
Window PreviewKeyDown - C
Window PreviewTextInput - C
当数据网格具有焦点时:
Window PreviewKeyDown - LeftCtrl
DataGrid PreviewKeyDown - LeftCtrl
Window PreviewKeyDown - A
DataGrid PreviewKeyDown - A
Window PreviewKeyDown - Oem6
DataGrid PreviewKeyDown - Oem6
Window PreviewTextInput - ]
Window PreviewKeyDown - LeftShift
DataGrid PreviewKeyDown - LeftShift
Window PreviewKeyDown - C
DataGrid PreviewKeyDown - C
Window PreviewTextInput - C