WPF单击不同的Treeviewitem时,TextBlock中文本的相关部分会突出显示

时间:2012-05-09 18:05:32

标签: wpf xaml textblock ivalueconverter xamlreader

我有一个Treeview和一个Textblock,它们都使用MVVM填充后端的数据。 TextBlock包含格式化的十六进制字符串(它看起来像这样:

<00> 0000:ad be e6 00 25 00 00 00 9e 7b 3b 04 40 01 db 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 c4 00 00 00 03 8c 09

每个Tree节点对象(viewmodel)都有一个startByte(应该突出显示的位置)和ByteLength(要突出显示的字节长度)属性。我需要实现的是,当单击树节点时,需要根据上面提到的两个属性突出显示相关的十六进制字符串(Textblock中整个十六进制字符串的一部分)。如果您使用过Wireshark,那么你就会知道我在说什么。

2 个答案:

答案 0 :(得分:0)

我尝试使用带有IsReadonly="True"的TextBox以及样式\控件模板来删除文本周围的任何框架。为防止用户输入,我将其设为IsHitTestVisible="False"

然后,我会使用文本框的选择来突出显示(在代码中)。

这有局限性,主要的一点是你只选择了一个“跨度”的文字。

答案 1 :(得分:0)

我使用TextRange及其ApplyPropertyValue方法设置TextElement.BackgroundProperty来解决我的问题。如果有人需要类似问题的帮助,我想我可以提供一些建议。