2

監視可能なコレクションをフィルタリング/ソートし、通知を保持する方法はありますか?

調べてみると、必要に応じてコレクションをフィルタリングおよび並べ替えるCollectionViewSourceが見つかりましたが、フィルターが依存するitemsプロパティがソースコレクションで変更されても、フィルターは更新されません。

基本的に、元のコレクションのビューが必要です。ビュー内のアイテムのプロパティが変更されるとソースが更新され、ソースが変更されるとビューが更新されます。Silverlight 3でこの機能を提供するクラスはありますか?

4

2 に答える 2

0

Bindable.Linqライブラリを使用することをお勧めします。しばらく更新されておらず、Union 演算子にバグがあります。しかし、linq スタイルのフィルターの場合はうまく機能します。

これが people という名前のリストボックスを持つ 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 からサンプル プロジェクトをダウンロードすると、より高度な例が表示されます。

お役に立てれば。

他にも類似のプロジェクトがいくつかあります

于 2009-12-18T22:48:06.570 に答える