WPF DataGrid и Windows Forms DataGridView - PullRequest
       46

WPF DataGrid и Windows Forms DataGridView

15 голосов
/ 06 января 2011

У меня есть опыт работы с WPF и Windows Forms, однако я использовал только Windows Forms DataGridView, а не WPF DataGrid (который был включен только в .Net 4 или мог быть добавлен в .Net 3.5 из Codeplex, насколько я понимаю). Я собираюсь развернуть приложение, использующее один из этих элементов управления для больших объемов данных, и у меня есть проблема с производительностью чтения - проблема с WPF DataGrid, поэтому я могу придерживаться Windows Forms DataGridView .. Это так?

Я не хочу использовать сторонний элемент управления.

Обеспечивает ли Windows Forms DataGridView значительную производительность по сравнению с WPF DataGrid для больших объемов данных?

Если бы я использовал WPF, я бы предпочел использовать .Net 3.5S SP1, если DataGrid в .Net 4 значительно лучше?

Также я хочу использовать ADO с DataTable, который, как мне кажется, лучше подходит для Windows Forms.

Ответы [ 5 ]

17 голосов
/ 06 января 2011

Для ваших нужд, если у вас нет других требований к WPF, я бы порекомендовал WinForms DataGridView.

WPF DataGrid был сделан доступным через Codeplex в виде «внеполосной» версии, т.е. это элементы управления, которые в конечном итоге попадут в API-интерфейсы WPF, но будут выпущены в Codeplex на ранней стадии, чтобы мы могли воспользоваться ими раньше следующий основной выпуск .NET. Вы можете использовать .NET 4.0 или кодовый комплекс DataGrid. Насколько я знаю, они одно и то же. WPF DataGrid прекрасно работает с DataTables. Смотрите примеры в моей следующей статье:

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

Однако инфраструктура и визуальные элементы WPF немного тяжелее, чем WinForms. Кроме того, WinForms DataGridView очень зрелый.

Для очень больших наборов данных WinForms DataGridView имеет одну особенность, которой нет в WPF DataGrid, что очень важно для очень больших сеток (миллионы строк), это виртуальный режим:

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

Известен также как виртуализация данных. В этом режиме вы сообщаете сетке, сколько строк в ваших данных, а затем обрабатываете события, чтобы заполнить ячейки. Это очень хорошо масштабируется. Я использовал это для массивных и сложных сеток.

В WPF предусмотрена виртуализация пользовательского интерфейса, которая является одной из форм утилизации управления пользовательским интерфейсом, но не виртуализации данных.

Надеюсь, это поможет.

1 голос
/ 24 ноября 2012

Для любого новичка (такого как я), принимающего это решение, WindowsForms чрезвычайно прост в использовании. Конечно, есть много других причин для использования WPF, которые могут повлиять на ваше решение, но если ваш проект в первую очередь DataGrid, то WinForms - это то, что нужно.

0 голосов
/ 05 июля 2015

Вы можете использовать DataGrid WPF в качестве DataGridView, если вы сначала заполняете ItemsSource DataGrid.

MyDataGrid.ItemsSource = MySource;
MyDataGrid.Columns[0].Width = 300;
MyDataGrid.Columns[0].Header = "MyName";
0 голосов
/ 06 января 2011

Проверьте сетку данных Xceed для WPF, которая намного лучше, чем WPF DataGrid, но это 3-я сторона, но она того стоит.

0 голосов
/ 06 января 2011

WPF DataGrid намного быстрее, я думаю.Но когда я пытаюсь использовать WPF DataGrid для большого количества данных (много столбцов (около 40-50) и строк) со стилями, это работает медленно (горизонтальная прокрутка).DataGrid от сторонних элементов управления работает намного лучше (я использую Infragistics XamDataGrid).

...