他のプラットフォームで CollectionView 実装を使用する場合と同様に、C1CollectionView を使用してコレクション内の項目をソートできます。C1CollectionView をソートしても、基底のデータセットは影響を受けません。
たとえば、SortDescription オブジェクトを渡す SortDescriptions プロパティを使用して、項目をソートできます。
Visual Basic コードの書き方
Visual Basic |
コードのコピー
|
---|---|
Dim list = New System.Collections.ObjectModel.ObservableCollection(Of Customer)() ' リストから C1CollectionView を作成します Dim _view As New C1.Xaml.C1CollectionView(list) ' 顧客を国に基づいてソートします _view.SortDescriptions.Add(New C1.Xaml.SortDescription("Country", C1.Xaml.ListSortDirection.Ascending)) |
C# コードの書き方
C# |
コードのコピー
|
---|---|
var list = new System.Collections.ObjectModel.ObservableCollection<Customer>(); // リストから C1CollectionView を作成します C1.Xaml.C1CollectionView _view = new C1.Xaml.C1CollectionView(list); // 顧客を国に基づいてソートします _view.SortDescriptions.Add(new C1.Xaml.SortDescription("Country", C1.Xaml.ListSortDirection.Ascending)); |
ここで、"Country" はソートの基準にするプロパティの名前です。ListSortDirection パラメータに基づいて昇順(A-Z)または降順(Z-A)でソートできます。
SortDescriptions を追加するだけで、複数のプロパティに基づくソートが可能です。複数のプロパティに基づいてソートする場合は、DeferRefresh メソッドを使用して各ソート後の自動リフレッシュを遅延させ、各ソートが一度だけ適用されるようにする必要があります。
Visual Basic コードの書き方
Visual Basic |
コードのコピー
|
---|---|
' リフレッシュが一度ですむように DeferRefresh を使用して複数のプロパティをソートします Using _view.DeferRefresh() _view.SortDescriptions.Clear() _view.SortDescriptions.Add(New C1.Xaml.SortDescription("Country", C1.Xaml.ListSortDirection.Ascending)) _view.SortDescriptions.Add(New C1.Xaml.SortDescription("Name", C1.Xaml.ListSortDirection.Ascending)) End Using |
C#コードの書き方
C# |
コードのコピー
|
---|---|
// リフレッシュが一度ですむように DeferRefresh を使用して複数のプロパティをソートします using (_view.DeferRefresh()) { _view.SortDescriptions.Clear(); _view.SortDescriptions.Add(new C1.Xaml.SortDescription("Country", C1.Xaml.ListSortDirection.Ascending)); _view.SortDescriptions.Add(new C1.Xaml.SortDescription("Name", C1.Xaml.ListSortDirection.Ascending)); } |
メモ: コレクションが INotifyCollectionChanged を実装している場合は、ソートの設定後であっても、データに加えられた変更がすべてソートに適用されます。
パフォーマンスを向上できる高度なソートについては、CustomSort プロパティを参照してください。