2011-01-06 10 views
15

Ho esperienza in WPF e Windows Form, tuttavia ho usato solo Windows Forms DataGridView e non WPF DataGrid (che è stato incluso solo in .Net 4 o potrebbe essere aggiunto a .Net 3.5 da Codeplex , Capisco). Sto per sviluppare un'app che utilizza pesantemente uno di questi controlli per grandi quantità di dati e avere prestazioni di lettura è un problema con il DataGrid di WPF, quindi potrei limitarmi a Windows Forms DataGridView. È questo il caso?WPF DataGrid Vs Windows Form DataGridView

Non voglio utilizzare un controllo di terze parti.

Il DataGridView di Windows Form offre prestazioni significative rispetto a WPF DataGrid per grandi quantità di dati?

Se dovessi utilizzare WPF, preferirei utilizzare .Net 3.5S SP1, a meno che il DataGrid in .Net 4 sia significativamente migliore?

Anche io voglio utilizzare ADO con DataTable di che mi sembra più adatto a Windows Form ..

risposta

17

Per le tue esigenze, a meno che tu non abbia altri requisiti che ti indirizzano verso WPF, ti consiglio WinForms DataGridView.

Il DataGrid di WPF è stato reso disponibile tramite Codeplex, come una release "fuori banda", ovvero si tratta del controllo che si farà strada nelle API di WPF, ma viene rilasciato su codeplex in anticipo in modo che possiamo trarne vantaggio prima della successiva versione .NET. È possibile utilizzare .NET 4.0 o DataGrid codeplex. Per quanto ne so, sono la stessa cosa. WPF DataGrid funziona molto bene con DataTable. Vedi gli esempi nel mio seguente articolo:

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

Tuttavia, il quadro WPF e le immagini sono leggermente più pesante di WinForms. Inoltre, il DataGridView di WinForms è molto maturo.

dimensioni molto grandi insiemi di dati, il WinForms DataGridView ha una caratteristica che non è presente nel WPF DataGrid, che è vitale per grandi reti (milioni di righe), questo è un modo virtuale:

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

Conosciuto anche come Data-Virtualization. In questa modalità, dici alla griglia quante righe ci sono nei tuoi dati, quindi gestisci gli eventi per popolare le celle. Questo scala molto bene. L'ho usato per griglie massicce e complesse.

WPF ha una virtualizzazione dell'interfaccia utente che è una forma di riciclaggio del controllo dell'interfaccia utente, ma non di virtualizzazione dei dati.

Spero che questo aiuti.

+0

Il DataGrid WPF è incredibilmente lento in confronto. –

+0

Dovrei aggiungere: Da allora ho usato il WPF DataGrid per i big data - in .Net 4.0 ed era OK, è più lento ma ha cose come il caricamento lento - solo interrogando i dati se lo si scorre - anche se si ha una macchina hi-spec che aiuta! – markmnl

-3

WPF DataGrid molto più veloce, penso. Ma quando provo a utilizzare WPF DataGrid per una grande quantità di dati (un sacco di colonne (circa 40-50) e righe) con stili che funzionano lentamente (scorrimento orizzontale). DataGrid di terze parti controlla il funzionamento molto meglio (io uso Infragistics XamDataGrid).

-2

Controllare Xceed datagrid per WPF che è molto meglio di WPF DataGrid ma è di terza parte, ma ne vale la pena.

1

Per tutti i principianti (come me) che prendono questa decisione, WindowsForms è tremendamente più facile da usare. Naturalmente, ci sono molti altri motivi per utilizzare WPF che potrebbero influenzare la tua decisione, ma se il tuo progetto è principalmente un DataGrid, allora WinForms è la strada da percorrere.

+1

Vorrei mettere in guardia imparando "il modo WPF", ad es. MVVM, da zero può essere più semplice della transizione da Win Form. – markmnl

0

È possibile utilizzare un DataGrid WPF come un oggetto DataGridView se si riempiono inizialmente ItemsSource di DataGrid.

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