| 

.NET C# Java Javascript Exception

3
Hallo zusammen.

Ich bin auf der Suche nach einem WPF Control für eine Matrix.
Die Matrix kann maximal eine Größe von 64.000 x 64.000 Einträgen haben, also extrem groß.
Als Anforderung an die Komponente habe ich insbesondere, das lazy loading sowohl in vertikaler als auch in horizontaler Richtung unterstützt wird.

Ich habe mir schon einige DataGrids angeschaut, die sowas ja grundsätzlich leisten, aber ich habe keins gefunden, die horizontales lazy-loading unterstützt.

Kennt jemand von euch so eine Komponente oder hat sonstwie Tipps wie ich eine solche Matrix möglichst performant erstellen kann?

Für Tipps wäre ich sehr dankbar.

Danke schonmal im voraus.
04.06.2012
multi1209 848 1 8
Was wäre denn Inhalt dieser Matrix? Zahlen, Text, Bilder, Templates, ...? Soll der Inhalt editierbar sein?
ffordermaier 04.06.2012
Der Inhalt sind kleine Icons. Wenn man auf ein Feld klickt, dann wird ein bestimmtes Icon eingefügt oder entfernt.
multi1209 04.06.2012
2 Antworten
1
Bist Du sicher, dass Du Lazy-loading und nicht Virtualisation meinst?
Der Vorteil von WPF/Silverlight ist ja gerade die Möglichkeit von Letzterem.
Wenn die Anzeige dann immer noch zu langsam ist kann man immer noch auf Lazy-Loading zugreifen.

  • Lazy-loading: Daten werden in Chunks nach Bedarf aus der Datenbank geladen.
  • Virtualisation : Daten befinden sich im Ram/Speicher und werden nach Bedarf angezeigt/gerendert.

Und wie ffordermaier bereits sagt, solltest Du die "üblichen Verdächtigen" durchstöbern.
Das Telerik RadGridView unterstützt z.B. die Virtualisierung von Zeilen und Spalten.
[Achtung Werbung ;-)]
Und überhaupt sollte man, wenn man WPF/Silverlight Entwicklung betreibt, die Telerik Controls immer in Erwägung ziehen - MVVM und PRISM werden nebenbei einwandfrei unterstützt.
04.06.2012
judgy 3,0k 1 1 8
1
Ja ich meine schon Lazy-Loading. Es sollen nicht die gesamten Daten geladen werden, sondern nur der Bereich, der gerade auch auf dem Bildschirm angezeigt wird. Werde mir mal die üblichen Verdächtigen anschauen. Übrigens, die Telerik-Controls gefallen mir auch sehr gut :-)
multi1209 05.06.2012
WPF-Data-Virtualization macht genau das: Create visual containers for the items that are actually visible (plus a few above and below) //http://www.codeproject.com/Articles/34405/WPF-Data-Virtualization
Mario Priebe 18.06.2012
0
So als erste spontane Idee:

Kannst nicht zwei Scrollbars um ein Grid fester Größe legen und anhand der Scrollpositionen den darzustellenden Datenausschnitt als [StartRow, EndRow, StartCol, EndCol] darstellen. Dann kannst im ViewModel die Daten anhand dieser Infos auch lazy laden.
Damit dürfte die Darstellung nicht mehr das Performance-Bottleneck sein, sondern eher das Laden der Daten. Ist aber auch sekundär, denn Du kannst in dem Fall einfach einen BusyIndicator verwenden oder nicht sofort beim Scrollen nachladen, sondern ein Throttling (Bremse) implementieren, die erst nach 0,5sec nach der letzten Scrollaktion das Laden triggert. Je nachdem, wie Deine Anforderungen genau lauten, finden sich sicher noch ein paar weitere Ideen...
04.06.2012
ffordermaier 8,4k 3 9
Das hört sich schonmal ganz gut an. Ist auf jedenfalls mal eine Idee, die ich ausprobieren werde. Ein fertiges Control, dass das alles schon liefert, wäre mir natürlich immer noch lieber :-)
multi1209 04.06.2012
Hast die üblichen Verdächtigen (Telerik, DevExpress, C1, Infragistics, ...) schon durchstöbert? Eine Evaluation ist bei perfromancekritischen Komponenten doch immer drin, oder?
ffordermaier 04.06.2012
Ja ich bin gerade dabei die üblichen Verdächtigen zu testen.
multi1209 05.06.2012

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH