Basic Library for UWP
C1CollectionView と CollectionViewSource
Basic Library for UWP > CollectionView for UWP > C1CollectionView の使い方 > C1CollectionView と CollectionViewSource

UWP の標準の ICollectionView インタフェースおよび CollectionViewSource の実装は、WPF や Silverlight に比べて機能が制限されています。たとえば、ICollectionView の UWP 実装は、ソート、フィルタ処理、コレクションの編集をサポートしていません。C1CollectionView クラスは、これらのサポートされていない要素を追加して、必要な機能を実行できるようにします。IC1CollectionView インタフェースは WPF および Silverlight の ICollectionView に基づいているため、それらのプラットフォームに精通している場合は、C1CollectionView を使用したソート、フィルタ処理、グループ化もおなじみの作業です。CollectionViewSource クラスに精通している場合、C1CollectionView への移行は極めて簡単です。

基底の Customer オブジェクトのリストが同じだとして、C1FlexGrid コントロールを CollectionViewSource に連結する例と C1CollectionView に連結する例を比べてみます。

CollectionViewSource:

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;

C1CollectionView:

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; }
}
関連トピック