0

我正在使用 WPF 来显示复杂的数据(想想报告)。我现在需要对其进行全文搜索。我们目前通过遍历可视化树来寻找文本块来做到这一点。看来这需要在UI线程上完成,是吗?这里的问题是,在整个 UI 块期间找到下一个匹配项可能需要相当长的时间。

有没有办法绕过这个问题?我可以尝试使用 UI 自动化,但是一旦找到匹配项,我该如何突出显示它?使用 UI 自动化我没有得到对 UI 元素的实际对象实例的引用,因此我不能在它上面放置一个装饰器。

WPF中的全文搜索通常是如何实现的?XPS 查看器是如何做到的?

4

2 回答 2

1

您是正确的,查询可视化树必须在 UI 线程上完成,而且 UI 自动化只能以与坐在计算机前的人类似的方式与应用程序交互,因此它无权访问实际控制(就像人没有)。

解决此问题的正确方法是将 UI 放在一边,然后在数据源(MVVM 中的模型)中搜索文本。毕竟,您确实想要搜索 UI 显示的信息,而不是 UI 本身。

于 2010-01-18T08:33:27.920 回答
0

wpf 自动将 inotifypropertychanged 编组到 ui 线程上,以便您可以在另一个线程上进行处理并设置属性。你如何做到这一点取决于你的代码结构。例如,您使用 mvvm 吗?如果不是,您可能需要使用调度程序来调用您的用户界面上的任何方法。如果您回复有关您的代码结构的更多信息,我应该能够提供更明确的答案。如果您不使用 mvvm,如果您将 wpf 数据绑定与可以进行处理的非 ui 数据源一起使用,您仍然可以避免显式编组。

于 2010-01-18T08:30:48.917 回答