| Basic Library for UWP/WinRT XAML > CollectionView for UWP/WinRT XAML > C1CollectionView と CollectionViewSource |
UWP/WinRT の標準の ICollectionView インタフェースおよび CollectionViewSource の実装は、WPF や Silverlight に比べて機能が制限されています。たとえば、ICollectionView の UWP/WinRT 実装は、ソート、フィルタ処理、コレクションの編集をサポートしていません。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; } } |
|