【问题标题】:How to deal with large delays in displaying data in WPF TreeView如何处理在 WPF TreeView 中显示数据的大延迟
【发布时间】:2012-04-15 09:40:26
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: c# wpf xaml treeview delay


    【解决方案1】:

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

    例子:

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

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

    Backgroundworker 还有一个 WorkerReportsProgress 属性。启用此功能后,您可以轻松更新进度条或百分比计数器,让用户知道在工作时发生了什么。

    Professional C# 4 and .NET 4 一书中对它进行了很好的解释。 它由 Wrox 出版。

    【讨论】:

    • 他知道如何使用线程并且清楚地说明了这一点。他询问了 WPF 的具体解决方案。
    • @Arek 我的错误.. 我想念他的问题。这个答案可能对其他人有所帮助..
    【解决方案2】:
    1. 使用线程让 UI 呼吸。

    2. 仅在用户请求时加载 TreeView 的根节点和子节点,方法是单击 [+]。

    3. 使用Data Virtualization 加载,因此只显示 UI 上实际可见的数据。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多