2011-03-25 16 views
8

Ho usato un certo numero di datagrids commerciali WPF in passato e devo dire che le prestazioni sono state piuttosto deludenti e lente. Mi piacerebbe essere in grado di caricare fino a un milione di record ed essere in grado di scorrere su e giù velocemente senza alcun ritardo.Come creare velocemente un controllo Datagrid WPF da zero?

Alcuni sviluppatori Guru WPF mi hanno detto che è effettivamente possibile creare un Datagrid WPF da zero - con molte meno funzioni di quelle commerciali - incentrato principalmente sulle prestazioni.

Ma come procedere? Mi è stato detto che lo sviluppo di questi datagrids non dovrebbe essere costruito nel solito modo di utilizzare ItemsControl, il che porta agli stessi problemi di prestazioni delle griglie wpf esistenti.

Un Guru è qui per indicarmi la giusta direzione?

Aggiornamento:

perché una persona menzionato il dubbio di aver bisogno di un milione di dischi, ormai troppi stanno saltando sul carro stesso. Quello che mi interessa è la creazione di un Datagrid veloce a bassa latenza con quasi tutte le funzionalità, che può contenere in teoria fino a un milione di record.

Non ho bisogno di alcun ordinamento, filtro o altro, tutto ciò di cui ho bisogno è la velocità. Ed ecco dove avevo bisogno di una guida da un Guru. So cos'è la virtualizzazione dei dati, non è abbastanza.

+1

Il tuo problema non è con i controlli disponibili, è il milione di record. La giusta direzione sarebbe quella di costruire un'interfaccia USER. –

+1

Seriamente, qual è il punto di avere la capacità di scorrere fluentemente attraverso un milione di voci se non riesci a trovare nulla perché stai guardando * un milione di voci *? –

+0

@ H.B. : Il punto è che molti DataGrid di WinForms possono farlo in modo fluido (e sì, la scansione dell'elenco ordinato può essere utile anche con un milione di voci) – EFraim

risposta

7

Sospetto che tu voglia guardare il VirtualisingStackPanel come parte della tua implementazione, rende solo i controlli man mano che diventano visibili.

Tuttavia, un milione di record suona come troppi per qualsiasi utente che abbia davvero bisogno sullo schermo in qualsiasi momento. Ho seriamente ripensato il mio design dell'interfaccia utente, ma sono solo io.

+1

+1 assolutamente vero: approccio dati virtuali. –

+0

La funzione di virtualizzazione di Datagrid come quella in Infragistics ecc non è abbastanza performante. – Houman

+3

Beh, sai quali aspetti lo rendono non performante? Qual è il collo della bottiglia? Hai determinato che è sicuramente l'interfaccia utente? Potrebbe essere possibile che anche ottenere 1 milione di record da un database o attraverso una rete faccia parte del problema? – BenCr