我有一个Treeview和一个Textblock,它们都使用MVVM填充后端的数据。 TextBlock包含格式化的十六进制字符串(它看起来像这样:
<00> 0000:ad be e6 00 25 00 00 00 9e 7b 3b 04 40 01 db 07每个Tree节点对象(viewmodel)都有一个startByte(应该突出显示的位置)和ByteLength(要突出显示的字节长度)属性。我需要实现的是,当单击树节点时,需要根据上面提到的两个属性突出显示相关的十六进制字符串(Textblock中整个十六进制字符串的一部分)。如果您使用过Wireshark,那么你就会知道我在说什么。
答案 0 :(得分:0)
我尝试使用带有IsReadonly="True"
的TextBox以及样式\控件模板来删除文本周围的任何框架。为防止用户输入,我将其设为IsHitTestVisible="False"
。
然后,我会使用文本框的选择来突出显示(在代码中)。
这有局限性,主要的一点是你只选择了一个“跨度”的文字。
答案 1 :(得分:0)
我使用TextRange及其ApplyPropertyValue方法设置TextElement.BackgroundProperty来解决我的问题。如果有人需要类似问题的帮助,我想我可以提供一些建议。