gpt4 book ai didi

c# - 如何正确更新对象列表?

转载 作者:太空宇宙 更新时间:2023-11-03 15:53:57 25 4
gpt4 key购买 nike

我通过网络请求获得了具有某些属性的对象列表。现在我想在列表中显示那些具有属性的对象(我将 WPF ListBox 与 DataTemplate 一起使用)并每 5 秒刷新一次。我知道两种方法:

  1. 每 5 秒清除一次列表并用新收到的数据填充它。这种方法会导致一些令人讨厌的事情,例如丢失当前选择和工具提示闪烁
  2. 尝试找到匹配的元素并更新它们的属性;然后将新元素添加到集合并删除删除。这种方法保留对现有对象的引用,只是更新它们的内容,从而减少错误的 GUI。但是这个实现起来要困难得多

我应该使用什么方法?也许第二个有现有的(简单的)解决方案?

更新看来我需要澄清我的问题。我确实使用 ObservableCollection<T>有两种方式绑定(bind)。问题是,当我想更新时,我发出了一个网络请求并获得了另一个包含不同对象实例的集合。我要问的是如何将新集合的更改应用到旧集合。

最佳答案

您应该使用一个实现了 INotifyPropertyChanged 的类, 并将您的列表保存在 ObservableCollection<> 中.

对于您想要绑定(bind)到界面的联系人的每个属性,确保 setter 引发 NotifyPropertyChanged每当值更改时都会发生事件,这将负责 UI 更新。

然后实际上就是在集合中找到要更改的正确项目 - 只要每个联系人都有一些唯一的 key ,这应该不会那么困难,即

var contactToUpdate = myCollection.SingleOrDefault(c => c.Key == itemKey);

关于c# - 如何正确更新对象列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24535290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com