代码之家  ›  专栏  ›  技术社区  ›  Nikola Sivkov

C 4.0.NET 4和WPF UI更新

  •  1
  • Nikola Sivkov  · 技术社区  · 16 年前

    我正在尝试建立一个应用程序来与类似twitter的网站一起工作,我要解决的问题是- 我该如何用后台工作人员更新用户界面,并且只添加显示最新文章的内容(如果愿意,可以添加推文) 在包装面板的顶部,而不删除已经存在的?

    在我之前的尝试中,我通过将tweets/posts存储在本地sqlite数据库中,然后检索最后10个posts来完成这一操作,这将导致UI冻结一点,并重新加载所有posts。

    有什么想法吗?

    2 回复  |  直到 16 年前
        1
  •  5
  •   Reed Copsey    16 年前

    因为您使用的是WPF,所以这相当容易。

    只需将您的“帖子”存储在 ObservableCollection<T> . 然后你就可以 Insert 列表前面的新项目。如果您已经将它绑定到itemscollection控件,那么WPF将为您正确地处理重新绘制所有内容。

    除非你有很多元素,否则这会很好地工作,而且速度也相当快。我会先尝试它(因为它很容易实现),只有当你发现它有性能问题时,才会尝试变得更“聪明”。不过,如果您使用正确的集合,我怀疑您会遇到问题,因为WPF与ObservableCollection的数据绑定非常快。

        2
  •  0
  •   dthorpe    16 年前

    使用数据绑定。UI元素被数据绑定到集合中记录的字段。多行面板应该是某种类型的item collection(很可能是listbox),这样它将为基础数据集合中的每一行复制item数据模板。

    之后,如果集合实现了inotifyCollectionChanged,则UI将跟踪对基础集合所做的任何更改。如果使用内存中的集合,则只需将新数据添加到集合的顶部(在索引0处插入),这将在UI显示中向下推送所有旧项。如果使用基于文件或服务器的数据源,则可以在后台线程中提取数据,并将更新发布到前台线程的内存中集合。只是不要从后台线程更新数据绑定集合。

    推荐文章