仮想モードは、GUI コントロールと大規模なデータセットの間の遅延のないデータ連結を DataSource for Entity Framework に提供する技術です。コードを記述したり、ページングを使用する必要はなく、プロパティを1つ設定するだけで、この技術を利用できます。そのプロパティは ClientViewSource.VirtualMode です。これには次の3つの値を設定できます。
- None: 仮想モードは無効になります。これがデフォルト値です。
- Managed: 仮想モード(サーバーからのデータのフェッチ)は、グリッドコントロールによって制御されます。仮想モードを制御するグリッドコントロールを指定するには、グリッドにある拡張(添付)プロパティを設定します。広く使用されているグリッドはほぼサポートされていますが、サポートされていないグリッドもあります(以下のリストを参照)。サポートされているグリッドで仮想モードを使用する場合は、Unmanaged ではなく Managed オプションを使用します。Managed オプションを使用すると、使用するグリッドに合わせてパフォーマンスが最適化され、最適なパフォーマンスを得ることができます。グリッドコントロールのほかに単純なコントロール(TextBox コントロールなど)が同じデータソースに連結されていてもかまいません。ただし、仮想モードを制御中のグリッドのほかに、"複雑な" 連結コントロール(別のグリッドやリストなど)は使用しないでください。
Managed モードは、現在、次のグリッドコントロールでサポートされています。
- ComponentOne: C1FlexGrid(WinForms、WPF、Silverlight)、C1DataGrid(WPF、Silverlight)。
- Microsoft: DataGridView(WinForms)、DataGrid(WPF)、DataGrid(Silverlight。ただし、Microsoft DataGrid for Silverlight の問題については、下記を参照)。
- Unmanaged: 仮想モード(サーバーからのデータのフェッチ)は、連結されているコントロールのタイプに関係なく、データソース自体によって制御されます。上にリストしたサポートされているグリッドに含まれないグリッド/リストなどのコントロールで仮想モードを使用する場合は、このオプションを使用します。ただし、データセット全体ではなく、現在のレコードにのみ連結する TextBox などの "単純な" コントロールは、Managed モードと Unmanaged モードの制限なく使用することができます。Unmanaged のパフォーマンスは、Managed と同様に優れています。ただし、Unmanaged にはいくつかの制限があります。詳細については、「Unmanaged 仮想モードの制限」を参照してください。これらの制限はそれほど強いものではありませんが、自動的にはチェックされません。このため、Unmanaged オプションを使用する場合は、制限に該当していないことを事前に確認してください。また、Unmanaged モードでは、どの時点で GUI コントロールに表示されるページサイズより大きな数を PageSize プロパティに設定しておく必要があります。Managed モードでは、PageSize は無視されます。
関連トピック