我正在使用WPF来显示复杂数据(想想报告)。我现在需要对它进行全文搜索。我们目前通过在视觉树上寻找文本块来做到这一点。看来这需要在UI线程上完成,是吗?这里的问题在于,在整个用户界面阻止期间发现下一场比赛可能需要相当长的一段时间。在工作线程中走VisualTree进行全文搜索
有没有办法规避这个问题?我可以尝试使用UI自动化,但是一旦找到匹配项,我该如何突出显示它?使用UI自动化我没有得到对UI元素的实际对象实例的引用,因此我无法在其上添加装饰器。
WPF中的全文搜索通常如何实现? XPS浏览器如何做到这一点?
我需要突出显示找到的文本。使用MVVM方法,我将如何选择/突出显示ViewModel中找到的文本部分?所有不同的文本部分和ViewModel实例之间必须有某种连接。同样使用MVVM,VIewModel需要知道View中使用的每个单独的文本。 ' '这里的标签内容只被视图所知,但它也需要通过文本搜索找到。 –
bitbonk
要使用MVVM来做到这一点,您必须确保您要搜索的所有内容都在您的模型中表现出来,并且您必须想出一个机制将模型与UI相关联以突出显示(例如,验证开始字符和长度的亮点)。如果您完全相信它是您需要搜索的UI,那么您将无法使用UI线程查询控件的内容并进行高亮显示。 UI Automation不会允许您修改用户无法更改的任何内容。 – GraemeF
UI自动化不会给出找到的控件的边界框吗?我可能可以在屏幕坐标中添加一个装饰器......(?) – bitbonk