データグリッドを備えた 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