2010-09-03 43 views
0

我正在看this教程。在15:40左右,发言者说像LINQ查询这样的东西不会创建像BindingListCollectionView这样的丰富集合。我想也许这意味着更改不会被保存到数据库或其他东西。所以我尝试用为什么需要创建可观察的集合

var result = from cust in database.Customers 
      where cust.City == "Seattle" 
      select cust; 

更换

var result = database.Customers.Execute(System.Data.Objects.MergeOption.AppendOnly); 

,所有仍然正常工作。

回答

9

ObservableCollection有一个事件,当它们的内容发生更改时会触发,因此ListView,ComboBox等可以在数据更改时与您的数据保持同步。如果列表的内容永远不会改变,那么不需要拥有ObservableCollection。

+0

我可以说“功能”不存在于“BindingListCollectionView”? – 2010-09-03 14:21:39

+2

如果你想使用BindingListCollectionView,你可以把你的结果(这是一个IEnumerable)并将其放入一个新的BindingListCollectionView或ObservableCollection – 2010-09-03 14:55:17

0

有时您不能使用ObservableCollection,因为您已经编写了要绑定到的自定义集合类。在这种情况下,您可以在自定义集合上实现ICollectionChanged和IPropertyChanged接口。

然后,您的自定义集合将像ObservableCollection一样工作(或至少达到集合中实现的程度)。