使用多种控件在WPF窗口中搜索并突出显示任何文本

Vin*_*Vin 5 wpf search text full-text-search wpf-controls

这基本上是在WPF窗口或用户控件中实现搜索/查找。假设您有一个WPF窗口,其中包含动态只读文本,其中一些在文本块上,一些在列表框中,在树视图中,在文本块中,等等。

用户应该能够在顶部的文本框中键入搜索词,并且无论该文本在窗口中出现在何处,都可以突出显示该搜索词。而且,该页面与FlowDocuments等无关,因此不能直接使用FlowDocumentReader。

称其为“控制文本搜索”,并突出显示搜索词,就像Google chrome浏览器对网页所做的那样。

以下SO线程可能会有所帮助,但不确定是否可以实现上述目标(我正在尝试将某些东西放在一起)

  1. 在WPF窗口中按类型查找所有控件
  2. WPF Listbox高亮显示ListBoxItem元素的一部分

这里有这篇文章,它也很有用,但可以用于“文档”而不是控件

  1. 搜索并突出显示WPF呈现页面上的所有文本

Vin*_*Vin 4

好吧,我似乎找到了一个看起来像我想要的链接。

在任意视觉树中搜索并突出显示文本

我将完成这个,如果这是上述问题的完整解决方案,我会回来更新

更新 1:好的,这确实有效,上面的链接有实际解决这个问题的代码,肯特干得很好!- 它一次性用黄色突出显示所有搜索文本,但缺少的一件事是导航突出显示,例如下一个->下一个。我计划解决这个问题,然后我可以在这里发布我的更新,以便对其他人有所帮助。

更新 2:好吧,这个解决方案还有另一个问题。突出显示的矩形绘制在屏幕坐标上。因此,如果您有很长的项目列表,并且滚动,突出显示的矩形仍然会粘在屏幕坐标上,而不是文本块本身。

所以现在我和我的队友将研究不同的解决方案。将保持此线程发布。