UWP の標準の ICollectionView インタフェースおよび CollectionViewSource の実装は、WPF や Silverlight に比べて機能が制限されています。たとえば、ICollectionView の UWP 実装は、ソート、フィルタ処理、コレクションの編集をサポートしていません。C1CollectionView クラスは、これらのサポートされていない要素を追加して、必要な機能を実行できるようにします。IC1CollectionView インタフェースは WPF および Silverlight の ICollectionView に基づいているため、それらのプラットフォームに精通している場合は、C1CollectionView を使用したソート、フィルタ処理、グループ化もおなじみの作業です。CollectionViewSource クラスに精通している場合、C1CollectionView への移行は極めて簡単です。
基底の Customer オブジェクトのリストが同じだとして、C1FlexGrid コントロールを CollectionViewSource に連結する例と C1CollectionView に連結する例を比べてみます。
Visual Basic コードの書き方
Visual Basic |
コードのコピー
|
---|---|
Dim customers As List(Of Customer) = Await GetCustomerData() Dim view = New CollectionViewSource() view.Source = customers c1FlexGrid1.ItemsSource = view.View |
C# コードの書き方
C# |
コードのコピー
|
---|---|
List<Customer> customers = await GetCustomerData(); var view = new CollectionViewSource(); view.Source = customers; c1FlexGrid1.ItemsSource = view.View; |
Visual Basic コードの書き方
Visual Basic |
コードのコピー
|
---|---|
Dim customers As List(Of Customer) = Await GetCustomerData() Dim view = New C1.Xaml.C1CollectionView(customers) c1FlexGrid1.ItemsSource = view |
C# コードの書き方
C# |
コードのコピー
|
---|---|
List<Customer> customers = await GetCustomerData(); var view = new C1.Xaml.C1CollectionView(customers); c1FlexGrid1.ItemsSource = view; |
MVVM で作業している場合は、ビューモデルで IC1CollectionView 型のプロパティを公開し、ビューモデル内でコレクションの内容を設定するだけで済みます。その後、XAML で、そのプロパティに C1FlexGrid(または使用している任意のコントロール)の ItemsSource プロパティを連結します。
Visual Basic コードの書き方
Visual Basic |
コードのコピー
|
---|---|
''' <summary> ''' 顧客のコレクションを取得します。 ''' </summary> Public ReadOnly Property Customers() As C1.Xaml.IC1CollectionView Get Return view End Get End Property |
C# コードの書き方
C# |
コードのコピー
|
---|---|
/// <summary> /// 顧客のコレクションを取得します。 /// </summary> public C1.Xaml.IC1CollectionView Customers { get { return view; } } |