2010-09-03 73 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一樣工作(或至少達到集合中實現的程度)。