2012-05-09 6 views
0

У меня есть Treeview и текстовый блок, и оба они заполнены данными из бэкэнд с помощью MVVM. TextBlock содержит форматированный шестнадцатеричной строки (это выглядит следующим образом:WPF При нажатии на другой Treeviewitem связанная часть текста в TextBlock получает подсветку

0000: Объявление будет e6 00 25 00 00 00 9e 7b 3b 04 40 01 дб 07
0016: 03 04 0A 00 00 39 e0 00 00 05 1d 27 31 81 00 2d
0032: 00 01 12 d3 AB 4f 00 01 01 с4 00 00 00 03 8c 09

Каждый объект узла дерева (ViewModel) имеет StartByte-величина (где должна начало выделения) и ByteLength (длина выделенных байтов). То, что мне нужно достичь, - это щелкнуть по узлу дерева, связанная с ним шестнадцатеричная строка (часть всей шестнадцатеричной строки в Textblock) должна быть подсвечена на основе двух свойств, упомянутых выше. вы использовали Wireshark, вы будете знать, что я ta здесь. Любое предложение будет оценено по достоинству.

Спасибо заранее,

lzdragon

ответ

0

Я бы попробовать сделать это с помощью TextBox с IsReadonly="True", плюс шаблон \ стиль управления, чтобы удалить любые рамки вокруг текста. Для предотвращения ввода пользователем я сделал бы это IsHitTestVisible="False".

Тогда я бы использовал выделение текстового поля, чтобы выделить выделение (в коде).

У этого есть ограничения, главное, чтобы у вас был только один «диапазон» выбранного текста.

0

Я использовал TextRange и его метод ApplyPropertyValue, чтобы установить TextElement.BackgroundProperty для решения моей проблемы. Если кому-то нужна помощь по подобным вопросам, я думаю, что могу предложить некоторые предложения.