WPF DataGrid Vs Windows Forms DataGridView

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

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

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

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

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

Ответы

Ответ 1

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

WPF DataGrid был доступен через Codeplex в качестве "внеполосной" версии, то есть это элемент управления, который в конечном итоге внесет свой вклад в API WPF, но будет выпущен на раннем этапе кода, чтобы мы могли извлечь выгоду из них раньше следующей крупной версии .NET. Вы можете использовать DataGrid.NET 4.0 или codeplex. Насколько я знаю, они одно и то же. 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 имеет виртуализацию пользовательского интерфейса, которая является формой утилизации управления пользовательским интерфейсом, но не виртуализацией данных.

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

Ответ 2

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

Ответ 3

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

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

Ответ 4

Проверьте Xat datagrid для WPF, который лучше, чем WPF DataGrid, но это 3rdparty, но стоит того.

Ответ 5

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