2011-01-06 23 views
15

Tengo experiencia en WPF y Windows Forms, sin embargo, solo he usado Windows Forms DataGridView y no WPF DataGrid (que solo se incluyó en .Net 4 o podría agregarse a .Net 3.5 desde Codeplex , Entiendo). Estoy a punto de desarrollar una aplicación utilizando uno de estos controles para obtener grandes cantidades de datos y el rendimiento de lectura es un problema con WPF DataGrid, así que me puedo quedar con Windows Forms DataGridView. ¿Es este el caso?WPF DataGrid Vs Windows Forms DataGridView

No quiero utilizar un control de terceros.

¿Windows Forms DataGridView ofrece un rendimiento significativo sobre WPF DataGrid para grandes cantidades de datos?

Si tuviera que usar WPF, ¿preferiría usar .Net 3.5S SP1, a menos que DataGrid en .Net 4 sea significativamente mejor?

También quiero usar ADO con DataTable de la que me siento se adapta mejor a las formas de Windows ..

Respuesta

17

Para sus necesidades, a menos que tenga otros requisitos que lo guíen hacia WPF, recomendaría WinForms DataGridView.

WPF DataGrid se puso a disposición a través de Codeplex, como una versión 'fuera de banda', es decir, son controles que eventualmente se abrirán paso en las API de WPF, pero se lanzan en Codeplex anticipadamente para que podamos beneficiarnos de ellos antes de la próxima versión importante de .NET. Puede usar .NET 4.0 o codeplex DataGrid. Hasta donde yo sé, son uno y el mismo. WPF DataGrid funciona muy bien con DataTables. Véanse los ejemplos en mi siguiente artículo:

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

Sin embargo, el marco WPF y visuales son un poco más pesado que el de Windows Forms. Además, WinForms DataGridView es muy maduro.

Para grandes bases de datos, la WinForms DataGridView tiene una característica que no está presente en el WPF DataGrid, que es vital para las grandes redes (millones de filas), este es un modo virtual:

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

Conocido también como virtualización de datos. En este modo, le dice a la grilla cuántas filas hay en sus datos, luego maneja los eventos para poblar las celdas. Esto se escala muy bien. Lo he usado para redes masivas y complejas.

WPF tiene una virtualización de IU que es una forma de reciclaje de control de IU, pero no de virtualización de datos.

Espero que ayude.

+0

El WPF DataGrid es sorprendentemente lento en comparación. –

+0

Debo añadir: desde entonces he usado WPF DataGrid para big data: en .Net 4.0 y estaba bien, es más lento pero tiene cosas como la carga lenta, solo consulta los datos si se desplaza hacia él, también si tiene ¡una máquina de alta especificación ayuda! – markmnl

-3

WPF DataGrid mucho más rápido, creo. Pero cuando trato de usar WPF DataGrid para una gran cantidad de datos (muchas columnas (alrededor de 40-50) y filas) con estilos, funciona lentamente (desplazamiento horizontal). DataGrid de terceros controla el trabajo mucho mejor (uso Infragistics XamDataGrid).

-2

Comprueba la cuadrícula de datos Xceed para WPF, que es mucho mejor que WPF DataGrid, pero que es de terceros, pero vale la pena.

1

Para que cualquier principiante (como yo) tome esta decisión, WindowsForms es tremendamente más fácil de usar. Por supuesto, hay muchas otras razones para usar WPF que pueden influir en su decisión, pero si su proyecto es principalmente un DataGrid, entonces WinForms es el camino a seguir.

+1

Advertiría sobre el aprendizaje de "la manera WPF", p. MVVM, desde cero, puede ser más fácil que la transición desde Win Forms. – markmnl

0

Puede usar un WG de DataGrid como un DataGridView si primero llena ItemsSource del DataGrid.

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