2009-12-17 74 views
2

有沒有過濾/排序可觀察集合並仍然保留通知的方法?Silverlight 3 - 過濾可觀察集合

我環顧四周,發現CollectionViewSource按照我的要求對集合進行過濾和排序,但是當過濾器依賴源項目集合中的項目屬性時,它不會刷新過濾器。

基本上我需要一個原始集合的視圖,當視圖中某個項目的屬性發生更改時,它會更新源以及源更改時更新視圖。是否有任何類在Silverlight 3中提供此功能?

回答

0

帶TwoWay綁定的ObservableCollection不起作用嗎?你能用一些代碼來詳細說明你的例子,以更詳細地展示這個問題嗎?

0

我建議使用Bindable.Linq庫,它尚未更新一段時間,並且聯盟運營商存在一個錯誤。但對於linq風格的過濾器來說,它效果很好。

繼承人一個簡單的例子,假設這是與人的列表框名爲Silverlight的用戶控件的代碼隱藏:

using Bindable.Linq; 
... 

ObservableCollection<Person> data = new ObserableCollection<Person>{.... fill in}; 
people.ItemsSource = data.AsBindable(Dispatcher).Where(p => p.FirstName.Equals("steve")); 
data.add(new Person("steve")); 

如果你這樣做史蒂夫應該出現在名單上。我發現這個庫非常有用,如果你從codeplex下載示例項目,它會顯示更高級的示例。

希望這會有所幫助。

還有其他幾個類似的項目