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).