【问题标题】:Binding WCF ObservableCollection to Silverlight DataGrid将 WCF ObservableCollection 绑定到 Silverlight DataGrid
【发布时间】:2012-04-02 02:51:18
【问题描述】:

我使用双工 WCF 服务从数据库中的存储过程填充了一个 silverlight Datagrid,该服务每 20 秒向客户端推送一组新的 ObservableCollection。现在,我的客户端 Datagrid itemsSource 每次新进来时都会重置为新的 ObservableCollection。我只是想知道是否可以将数据网格的 itemsSource 直接绑定到 WCF 服务 ObservableCollection,这样我就不必每次重置源,当从服务 ObservableCollection 触发 INotifyPropertyChanged 时,UI 将自动更新。

我尝试了这篇帖子 http://forums.silverlight.net/t/216796.aspx/1 中的解决方案,但这并不是我想要的,因为它仍然每次都会重置 itemsSource。

任何帮助将不胜感激。

【问题讨论】:

  • 我认为您的意思是 INotifyCollectionChanged 而不是 INotifyPropertyChanged?如果您只是每次都重新绑定,则可以改为绑定到 List

标签: silverlight datagrid wcf-binding


【解决方案1】:

创建要绑定的 ObservableCollection 属性。当您的服务更新时,清除此集合并从服务中添加列表中的所有元素,或者只检查并添加/删除需要更改的元素。

【讨论】:

  • 感谢您的回复,我已经尝试过了,但它仍然不是我想要的理想解决方案,因为首先清除集合并添加新集合仍然与重置数据源相同。就“仅通过并添加/删除那些需要更改的内容”而言,现在我有一个 for 循环,它将旧集合与新集合进行比较并更新旧集合,但效率不高。你有什么更好的方法吗?
  • sicccccc,你需要问问自己,清空集合并添加新项目,哪个效率更高,或者你提到的for循环效率不高。
  • 嗨 dparker,我真正想知道的是,如果有更好的替代解决方案,我可以从服务中动态更新我的 observablecollection。你有什么建议吗?我想避免清除新集合并将其添加到我的数据网格源中,因为它会使我的数据网格丢失其当前视图。
  • 是有实际问题,还是纯理论问题?如果这是一个实际问题,解决方案可能是重新设计服务以仅提供需要更新的元素。
  • 这是一个实际问题,那么我怎样才能使服务只提供需要更新的元素呢?能不能说的具体点?
猜你喜欢
  • 2013-09-07
  • 2012-12-19
  • 2016-09-13
  • 1970-01-01
  • 2013-10-14
  • 1970-01-01
  • 2014-08-23
  • 2018-02-25
相关资源
最近更新 更多