如何处理在WPF TreeView中显示数据的大延迟

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何处理在WPF TreeView中显示数据的大延迟相关的知识,希望对你有一定的参考价值。

我正在使用WPF TreeView向用户显示统计信息。 TreeView通过MVVM绑定到一堆对象。

有时,当TreeNode确实包含很多项时,显示所有这些项需要几秒钟。在此期间,应用程序似乎卡住了。

我希望TreeView在此延迟期间显示响应。

如果我在WinForms中这样做,我会显示某种加载图标,并在后台线程中进行计算,然后我将更新相应的TreeNode。

什么是在WPF中处理这个问题的最佳方法?

答案

您需要使用线程,以便在处理大量数据时您的应用程序不会卡住。

例:

在我正在开发的应用程序中,我需要在所有文件夹中搜索特定文件。这会冻结应用程序(甚至不让我最小化窗口),直到完成整个搜索。

为了避免这种情况,我使用了一种名为BackgroundWorker的东西,它让我在后台执行搜索。这意味着我可以在后台进行繁重的工作时控制我的应用程序。

Backgroundworker还具有WorkerReportsProgress属性。启用此功能后,您可以轻松更新进度条或百分比计数器,以便让用户了解在执行工作时发生的情况。

它在Professional C#4和.NET 4一书中得到了很好的解释。它由Wrox出版。

另一答案
  1. 使用线程来进行UI呼吸。
  2. 仅在用户请求时才加载TreeView和children的根节点,方法是单击[+]。
  3. 使用Data Virtualization加载,因此仅显示UI上实际可见的数据。

通过结合这些技术,即使是其中的一部分,您已经将显着提高性能。

以上是关于如何处理在WPF TreeView中显示数据的大延迟的主要内容,如果未能解决你的问题,请参考以下文章

Python Selenium - 如何处理在WebDriverWait完成之后才显示的警报?

如何处理在域模型中没有表示的查询?

如何为 WPF TreeView 设置 DataTemplate 以显示列表的所有元素?

如何处理在 php mysql 中返回多个值的内部查询?

GraphQL:如何处理在自己的类型定义中引用类型?

Node.js:如何处理在字典中查找同名的不同城市?