2009-06-10 42 views
5

所以我有一個datagrid,我需要添加自定義排序,我也需要知道排序的確切順序。Silverlight和icollectionview

我已閱讀爲了做到這一點我需要實現一個自定義icollectionview並將其綁定到數據網格。

我遇到的問題是微軟在這個界面上給出的文檔並不是那麼好。有誰知道如何做到這一點或有任何好的教程如何實現這個接口的Silverlight?

回答

5

我在找相同的東西,從Colin Eberhardt找到本文章。它展示瞭如何使用ICollectionView的實現來實現排序。如果您想知道如何實現過濾,請告訴我。

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 2009-06-10 15:52:30

+0

好吧,我沒有意識到這個類在Silverlight中丟失。奇怪的是,ICollectionView接口是存在的,但似乎沒有任何類實現它...即使ItemCollection類沒有(在WPF中它)。奇怪... – 2009-06-10 16:20:23

1

我發現的最好的例子是Microsoft的ICollectionView實現,它是爲與DataGrid一起使用而創建的。不幸的是,他們在內部標記它,所以你不能直接使用它(和一個副本&源的粘貼需要一些修改)。打開Reflector並打開System.Windows.Controls.Data.dll - 導航到System.Windows.Controls命名空間,在那裏您可以找到ListCollectionView。這裏的定義表明,它實現了ICollectionView:

內部類的ListCollectionView:ICollectionView,INotifyCollectionChanged,INotifyPropertyChanged的,IEnumerable的 ...

我真的希望微軟會提供該類 - 幾乎每一個LOB應用程序需要它。

2

Silverlight 3現在支持並實現了ICollectionView,名爲PagedCollectionView

這提供了排序和分組,但不是過濾。

相關問題