2012-03-16 88 views
0

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

我试过在这篇文章中的解决方案http://forums.silverlight.net/t/216796.aspx/1但它不完全是我想要的,因为它仍然每次重置itemsSource。

任何帮助将不胜感激。

+0

我认为你的意思是INotifyCollectionChanged而不是INotifyPropertyChanged?如果您只是每次重新绑定,您可能会改为绑定到列表。 – RichardOD 2012-03-16 20:59:07

回答

0

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

+0

感谢您的回复,我已经试过了,但仍然不是我想要的理想解决方案。首先清除收集并添加新收集仍与重置数据源相同。就“通过并添加/删除仅需要更改的项目”而言,现在我有一个for循环,它将旧集合与新集合进行比较并更新旧集合,但效率不高。你有没有更好的方法来做到这一点? – sicccccc 2012-03-16 15:44:17

+0

sicccccc,您需要问问自己,哪种方法更高效,清理集合并添加新项目,或者您提到的for循环效率不高。 – dparker 2012-03-16 17:21:26

+0

嗨dparker,我真正想知道的是,如果有更好的替代解决方案,我可以从服务动态更新我的observablecollection。你有什么建议吗?我想避免清理和添加新的集合到我的数据网格源,因为它会让我的数据网格失去它的当前视图。 – sicccccc 2012-03-16 17:42:42

相关问题