DataSource for Entity Framework for WPF/Silverlight
その他の仮想モードの制限
プログラミングガイド > 仮想モード > その他の仮想モードの制限

         仮想モードで1つのデータソースに2つの独立してスクロール可能なコントロール(データセット内の別の場所に独立してスクロール可能なグリッドまたはリスト)を連結することはサポートされません。これは、Unmanaged モードだけでなく、Managed モードでも同じ理由でサポートされていません。2つのモードの違いは、単に Managed モードでは影響がすぐに現れ、したがって動作に予測不能な要素がないため、危険性がより小さいということだけです。メインの "制御中" の連結コントロールのほかに、別のスクロール可能なコントロールが同じデータソースに連結されている場合、そのコントロールは "制御中" ではありません。つまり、そのコントロール内でスクロールしても、データはフェッチされません。このため、メインコントロールに表示されていない行にスクロールすると、空の行が表示されます。

         Managed モードでも Unmanaged モードでも、(1つのレコードではなく)データセット全体に連結されているグリッド、リストなどのコントロールで、データソースのすべての行に対して何らかの処理を一度に実行してはなりません。言い換えると、データソースのすべての行をループして、各行に何らかの処理を行うようなアクションをコントロールのコードで実行してはなりません。これは、単純に、仮想モードで扱う行数が、数千行から数百万行にまで、極めて多くなることがあるためです。実際、その数は無制限です。データソース内の行数が少ないという仮定には依存しない、適切に設計されたコントロールは、Entity Framework DataSource(EF DataSource)の仮想モードで正常に動作します。ただし、小規模なデータソース向けに特別に設計されたコントロール、たとえばすべての行をループするようなコントロールを、大量の行を含むデータソースと一緒に使用すると、長時間の遅延が発生する可能性があります。C1FlexGrid および C1DataGrid(WinForms/WPF/Silverlight 用)、Microsoft DataGridView(WinForms)、Microsoft DataGrid for WP はいずれも正常に動作します。一方、Microsoft DataGrid for Silverlight(現行バージョンの Silverlight 4)は、すべての行をループしてコントロールの高さを計算するため、EF DataSource の仮想モードに推奨されません。