【问题标题】:How to make UI elements load without freezing? (WPF)如何使 UI 元素加载而不冻结? (WPF)
【发布时间】:2012-04-05 10:26:45
【问题描述】:

我有一个树视图和一个文本框。当我在文本框中输入内容时,它会实时更新树视图(根据我输入的内容过滤并匹配树视图中的对象)。

问题是当我在框中键入时它开始有点冻结。 IE。而树视图正在更新文本框冻结。我已将填充树视图的逻辑放在另一个线程中,希望这会使它运行得更快一些——它确实做到了,但还不够。我相信是实际的 UI 更新导致响应能力下降。

有哪些方法可以解决这个问题?是否可以在不同的线程中处理不同的 UI 元素(在本例中为树视图和文本框) - 而不仅仅是现在的逻辑?

谢谢

【问题讨论】:

    标签: wpf user-interface freeze


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 感谢您的回复。是否可以存在多个 UI 线程或者这是 .NET 的限制?将过滤作为一项单独的任务是什么意思?目前过滤(通过树视图搜索)是在另一个线程中完成的。只是树视图的实际更新似乎减慢了速度。干杯
    • @theqs1000 受.NET的限制,它只存在一个ui线程。您可以尝试使用 CollectionViewSource(尝试查看 msdn 帮助)来过滤您的树视图或仅在单独的线程(任务)中过滤您的源集合,然后将结果放入树视图(因此树视图不会冻结),希望这有帮助
    猜你喜欢
    • 2016-07-30
    • 2018-12-22
    • 2015-01-16
    • 2019-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-02
    相关资源
    最近更新 更多