Отображение специальных (не печатаемых) символов в элементе управления WPF - PullRequest
5 голосов
/ 16 июля 2010

У меня есть необработанные двоичные данные, полученные от устройства.Я хотел бы отображать эти данные так, как это делают редакторы HEX - отображать шестнадцатеричные значения, но также отображать соответствующие символы.

Я нашел шрифты, которые имеют символы для кодов ASCII 0 - 32, но я не могу их отобразить на экране.

Я пробовал это с WPF listbox, itemscontrol и textbox.

Есть ли какие-то настройки, которые могут заставить это работать?
Или, может быть, какой-то элемент управления WPF, который будет отображать эти символы?

Редактировать:
После некоторых размышлений и испытаний только символы, вызывающие проблемы, - это перевод строки, перевод формы, возврат каретки, возврат на одну позицию, горизонтальная и вертикальная табуляция.В качестве быстрого решения я решил заменить эти символы на символы ASCII 16 (10HEX).Я протестировал это с файлами ASCII, UTF-8 и Unicode, и он работает с этими тремя форматами.

Вот регулярное выражение, которое я использую для этого:

rawLine = Regex.Replace(inputLine, "[\t\n\r\f\b\v]", '\x0010'.ToString());

Он заменяет все вхождения этих 6 проблемных символов некоторым квадратным знаком.Это показывает, что это не «обычный печатный» символ, и он работает для меня.

1 Ответ

3 голосов
/ 12 февраля 2011

Не уверен, что это именно то, что вам нужно, но я бы порекомендовал вам взглянуть на проект # develop . Их редактор может отображать пробелы, табуляции и маркеры конца строки.

Я быстро взглянул на исходный код и в пространство имен ICSharpCode.AvalonEdit.Rendering класс SingleCharacterElementGenerator, кажется, делает то, что вы хотите.

...