web-dev-qa-db-ja.com

WPFDataGridとWindowsフォームDataGridView

私はWPFとWindowsフォームの経験がありますが、WindowsフォームDataGridViewのみを使用し、WPF DataGridは使用していません(.Net 4にのみ含まれていたか、Codeplexから.Net 3.5に追加できました)。大量のデータに対してこれらのコントロールの1つを頻繁に使用してアプリを開発しようとしていますが、読み取りパフォーマンスがWPF DataGridの問題であるため、WindowsフォームDataGridViewに固執する可能性があります。これは本当ですか?

サードパーティのコントロールを使用したくありません。

WindowsフォームDataGridViewは、大量のデータに対してWPF DataGridよりも優れたパフォーマンスを提供しますか?

WPFを使用する場合、.Net 4のDataGridが大幅に優れている場合を除き、.Net 3.5S SP1を使用したいと思いますか?

また、Windowsフォームに適していると思うDataTableでADOを使用したいと思います。

15
markmnl

ニーズに応じて、WPFに向かう他の要件がない限り、WinFormsDataGridViewをお勧めします。

WPF DataGridは、「帯域外」リリースとしてCodeplex経由で利用可能になりました。つまり、これらは最終的にWPF APIに組み込まれるコントロールですが、次のメジャーの前にそれらのメリットを享受できるように、Codeplexで早期にリリースされます。 .NETリリース。 .NET4.0またはcodeplexDataGridのいずれかを使用できます。私の知る限り、それらは同じものです。 WPF DataGridは、DataTablesと非常にうまく連携します。次の記事の例を参照してください。

http://www.codeproject.com/KB/WPF/WPFDataGridExamples.aspx

ただし、WPFフレームワークとビジュアルはWinFormsよりもわずかに重いです。また、WinFormsDataGridViewは非常に成熟しています。

非常に大きなデータセットの場合、WinForms DataGridViewには、WPF DataGridには存在しない機能が1つあります。これは、非常に大きなグリッド(数百万行)に不可欠です。これは仮想モードです。

http://msdn.Microsoft.com/en-us/library/ms171622.aspx

データ仮想化とも呼ばれます。このモードでは、データに含まれる行数をグリッドに通知してから、イベントを処理してセルにデータを入力します。これは非常にうまくスケーリングします。私はこれを大規模で複雑なグリッドに使用しました。

WPFには、UIコントロールのリサイクルの一形態であるUI仮想化がありますが、データ仮想化はありません。

お役に立てば幸いです。

17
ColinE

この決定を行う初心者(私のような)にとって、WindowsFormsは非常に使いやすいです。もちろん、決定に影響を与える可能性のあるWPFを使用する理由は他にもたくさんありますが、プロジェクトが主にDataGridである場合は、WinFormsが最適です。

1
David

最初にDataGridのItemsSourceに入力する場合は、DataGridWPFをDataGridViewとして使用できます。

MyDataGrid.ItemsSource = MySource;
MyDataGrid.Columns[0].Width = 300;
MyDataGrid.Columns[0].Header = "MyName";
0
Alex Fatkin