仮想化データグリッドで高速にレンダリング
はじめに
Ultimate UI Controls for Xamarinのデータグリッドは、仮想レンダリング機能により、行や列の数に制限のないデータを処理できます。最も高速なレンダリング、滑らかなタッチ操作、そしてカスタマイズされた列と行の操作が可能です。このレッスンでは、ODataサービスに接続されたデータグリッドを設定するコードを確認し、iOSとAndroidでグリッドの優れたパフォーマンスを体験します。
数行のサンプルコードで、Northwindサービスの公開データソースに接続できます。XamDataGridを使用して利用可能なデータソース(この例ではODataサービス)にバインドし、高性能なデータグリッドにデータを表示できます。
レッスンの目標
このレッスンの終わりには、ODataデータソースを使用した高性能グリッドが完成しています。そのための主な手順は次のとおりです。
- プロジェクトをセットアップする
- データソースを定義する
- ソースをビューにバインドする
- ソリューションをテストする
このレッスンで使用するコントロールの詳細については、Xamarin Data Gridコントロールのページを参照してください。
手順1:プロジェクトのセットアップ
このレッスンで使用するプロジェクトは、こちらをクリックしてダウンロードできます。

次に、ZIPを解凍後に初めてプロジェクトを実行するには、ソリューション全体をVisual Studioに読み込み、ソリューションを右クリックして「パッケージの復元」を選択します。
完了したら、Portable Class LibraryとAndroidプロジェクトの両方に、DataSource.DataProviders.OData.Core.dllへの参照を追加します。このファイルは、ZIPダウンロードに含まれるOtherDependenciesフォルダにあります。プロジェクト内の参照フォルダを右クリックし、OtherDependenciesフォルダを参照して、DataSource.DataProviders.OData.Core.dllを選択すれば追加できます。

ソリューション内の両方のプロジェクトで同じ操作を行います。最後に、ターゲットAndroidバージョンが「Use Compile using SDK version.」に設定されていることを確認します。この設定は、Androidプロジェクトを右クリックして「プロパティ」を選択すると確認できます。

手順2 データソースを定義する
次に、GridRemoteDataViewModelでNorthwindサービスのデータソースをバインドします。XFPerfSamplesプロジェクトでViewModelsを展開し、GridRemoteDataViewModel.csソースファイルを開きます。
サンプルプロジェクトには、GridRemoteDataViewModelがすでに作成されており、データソースはODataとして定義されています。ソースに、次のコードを追加してデータソースを定義します。
BaseUri="http://services.odata.org/V4/Northwind/Northwind.svc",
EntitySet="Orders",
PageSizeRequested=25,
MaxCachedPages=5_BaseUri_は、NorthwindサーバーをODataソースとして定義します。Northwindサービスからは、EntitySetによってサービスから取得するデータが定義されます。_PageSizeRequested_は、ページを要求するたびに返される1ページあたりの項目数です。MaxCachedPagesは、要求後にキャッシュされるページ数です。

データソースを定義した後、次の手順では、そのソースをビューにバインドします。
手順3 データソースをバインドする
ソースを定義したら、そのソースをビューにバインドする必要があります。Visual Studioプロジェクトで、Viewsを展開し、GridRemoteData.xamlファイルを開きます。これには、インフラジスティックスのデータグリッドの名前空間が必要です。Infragistics Toolboxを使用すると、必要なコードの作成を自動化できますが、このレッスンでは手動でコードを記述します。
<igDataGrid:XamDataGrid x:Name="grid1" ItemSource="{Binding DataSource}" AutoGenerateColumns="False">
<igDataGrid:XamDataGrid.Columns>
<igDataGrid:TextColumn PropertyPath="OrderID" HeaderText="Order ID"/>
<igDataGrid:TextColumn PropertyPath="CustomerID" HeaderText="Customer ID"/>
<igDataGrid:TextColumn PropertyPath="ShipName" HeaderText="Ship Name" />
<igDataGrid:TextColumn PropertyPath="ShipCity" HeaderText="Ship City" />
</igDataGrid:XamDataGrid.Columns>
</igDataGrid:XamDataGrid>この例では、_AutoGenerateColumns_プロパティをfalseに設定しています。このプロパティをTrueに設定すると、データソースが検査され、必要な列が作成されます。使用するデータセットによっては、これがモバイルアプリで問題を引き起こす可能性があります。上記のコードセグメントでは、_TextColumns_として列を手動で指定しています。

手順4 ソリューションをテストする
データソースとバインドの設定が完了したら、エミュレーターまたは実機でソリューションをテストできます。このレッスンでは、Android 6.0エミュレーターを使用してテストします。これにより、アプリケーションがコンパイルされ、APKがビルドされ、パッケージがエミュレーターまたはデバイスにデプロイされます。デバッガーはVisual Studioでバックグラウンドで起動し、アプリを操作できるようになります。アプリからGrid – Remote Dataをクリックします。

デバイスやエミュレーターによっては、ソースデータを読み込んでいる間、グリッドは最初は空白に表示されます。読み込みが完了し、スクロールすると、グリッドにデータが表示されます。マウスや指でスクロールして複数のページを読み込み、グリッドをテストします。データがまだ読み込みのためにソースされていない場合は、データの読み込み中にインターフェース内に一時的なセルが表示されます。
まとめ
XamDataGridは、Xamarinモバイルアプリで使用されるさまざまな種類のデータソースで使用されます。これにより、任意のデータソースを使用して高性能データグリッドを作成でき、エンドユーザーにとってシームレスな体験が実現します。