【问题标题】:A ListView binding ObservableCollection<T>, I need to refresh ListView but it cost long time一个 ListView 绑定 ObservableCollection<T>,我需要刷新 ListView 但它需要很长时间
【发布时间】:2018-01-18 01:19:11
【问题描述】:

我有一个 ListView,它在 ViewModel 中绑定了一个 ObservableCollection 对象(名为 Categorys),现在我需要清除 Categroys,然后用来自套接字的结果再次填充它。这个进度可能需要 10 秒,我希望 ListView 在这 10 秒内仍然显示数据。我能怎么做?制作类别的副本?

【问题讨论】:

    标签: wpf listview binding observablecollection


    【解决方案1】:

    如果您要替换整个集合,为什么不让从套接字获取数据的服务在后台线程上创建一个新的 ObservableCollection,然后在完成后设置您的 ViewModel.Categorys = newCollection。

    【讨论】:

    • 当我使用 newCollection.Clear() 时,ListView 仍然不显示任何内容...;)
    • 你为什么要清除新的收藏?如果您在原始问题中发布了一些代码以帮助了解您尝试完成任务的内容和方式,将会有所帮助。
    • 非常感谢,我找到了办法。只有这条线花费时间。 var 结果 = Communication.SocketAPI.Instance.ListFile(string.Empty, FolderType.None, generateCommandID());所以我在此之后完全清除类别。
    • ObservableCollection 的变化会通知 UI,所以 ViewModel.Categorys = newCollection 和 newCollection.Clear() 仍然让 UI 什么都不显示。
    • 我认为是这个原因。不知道对不对。
    猜你喜欢
    • 2015-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-18
    • 1970-01-01
    相关资源
    最近更新 更多