2012-04-05 65 views
0

我有一个treeview和一个文本框。当我在文本框中输入时,它实时更新树形视图(按照我输入的内容进行过滤,并与树视图中的对象进行匹配)。如何使UI元素加载而不冻结? (WPF)

问题是它开始冻结一点,因为我在框中键入。即。而树视图正在更新文本框冻结。我已经把填充树视图的逻辑放在另一个线程中,希望这会使它运行得更快 - 它做到了,但还不够。我认为这是导致响应性降低的实际UI更新。

有什么方法可以解决这个问题?是否有可能在不同的线程中处理不同的UI元素(在这种情况下,树视图和文本框) - 而不仅仅是现在的情况?

谢谢

回答

0

你的问题是只有一个UI线程存在!

您的问题的一个可能的解决方案是在用户输入文字后的几毫秒后过滤树状视图。

另一种可能性是在单独的任务中进行筛选,并重新分配Treview的结果。

我希望这可以帮助你解决你的问题。

+0

感谢您的回复。是否有可能使多个UI线程存在或是.NET的限制?将过滤作为一项单独的任务意味着什么?目前,过滤(在树视图中搜索)在另一个线程中完成。这只是树视图的实际更新,似乎会减慢速度。干杯 – theqs1000 2012-04-06 05:54:52

+0

@ theqs1000它只存在一个由.NET限制的UI线程。您可以尝试使用CollectionViewSource(尝试查看MSDN帮助)来过滤您的树视图,或者只在一个单独的线程(任务)中过滤源集合,然后将结果放到树视图中(因此树视图不会冻结),希望这有助于 – punker76 2012-04-07 21:00:30