2009-06-10 6 views
5

私はカスタムソートを追加する必要があるデータグリッドを持っており、ソートの正確な順序も知る必要があります。Silverlightとicollectionview

これを行うために私は読んでいます。私はカスタムicollectionviewを実装し、それをDataGridにバインドする必要があります。

私が抱えている問題は、Microsoftがこのインターフェイスで提供しているドキュメントはそれほど大きくないことです。誰もがこれを行う方法を知っているか、Silverlightのためのこのインターフェイスを実装する方法に関する良いチュートリアルを持っていますか?

答えて

5

私は同じものを探していて、この記事をColin Eberhardtから見つけました。 ICollectionViewの実装を使用してソートを実装する方法を示します。

フィルタリングの実装方法を理解している場合は、教えてください。

+0

グリッドを並べ替えるために記事のコードを取得できました。 – zachary

0

ここでは、ICollectionViewを使用してソートを実行します。

ICollectionView view = CollectionViewSource.GetDefaultView(someCollection); 
view.SortDescriptions.Add(new SortDescription("someProperty", ListSortDirection.Ascending)); 
view.SortDescriptions.Add(new SortDescription("someOtherProperty", ListSortDirection.Descending)); 

しかし、それは私が「カスタムソート」と呼ぶものではありません。ソートの基準と方向を選択するだけです。あなたは何をしたいと思っているのか、より具体的になりますか?

+0

ここで私が持っている問題は、Silverlightは実際にCollectionViewSourceを持っていないので、実装する必要があるということです。 – zachary

+0

このクラスはSilverlightにはありませんでした。奇妙な点は、ICollectionViewインターフェイスが存在することですが、実装するクラスがないようです... ItemCollectionクラスでさえも(WPFではそうではありません)。奇妙な... –

+0

はい奇妙な...と迷惑な。私は実際にこのクラスの実装を使用することができます。 –

1

私が見つけた最良の例は、DataGridで使用するために作成されたMicrosoftのICollectionView実装です。残念ながら、内部でタグ付けしていますので、そのまま使用することはできません(ソースのコピーは&の貼り付けが必要です)。 Reflectorを破棄してSystem.Windows.Controls.Data.dllを開き、System.Windows.Controls名前空間に移動します。そこにListCollectionViewがあります。ここでは、ICollectionViewの実装していることを示すために定義です:

内部クラスListCollectionViewを:ICollectionViewに、INotifyCollectionChanged、INotifyPropertyChangedの、IEnumerableを ...

私は本当にMSは、このクラスを提供してほしい - 実質的にすべてのLOBアプリがそれを必要とします。

2

Silverlight 3は、PagedCollectionViewというICollectionViewをサポートし、実装しました。

これはソートとグループ化を行いますが、フィルタリングは行いません。この質問を参照し、他の者のために

関連する問題