Laden...

Einfrieren der Applikation bei Erstellung der Visual Container eines Datagrids

Letzter Beitrag vor 14 Jahren 2 Posts 984 Views
Einfrieren der Applikation bei Erstellung der Visual Container eines Datagrids

Moin, ich habe die letzten Wochen an nem Problem zu knabbern, dass mir keine Ruhe lässt.

Zuerst einmal als Anmerkung, mir ist der FAQ-Eintrag zum Thema freezen sehrwohl bekannt, und dies ist hier nicht das Problem.

Ich habe folgenden Code:


            <DataGrid Grid.Row="1" ItemsSource="{Binding Source={StaticResource iGroupedJournal}}">
                <DataGrid.Columns>
                    <DataGridTextColumn Binding="{Binding Path=DateTime}" Header="DateTime" />
                    [...]
                </DataGrid.Columns>
            </DataGrid>

iGroupedJournal ist eine normale CollectionViewSource, die auf eine modifizierte ObservableCollection bindet, die automatisch NotifyCollectionChanged im GUI Thread auslöst (was ja erforderlich ist).

Das Problem stellt sich nun eben darin, dass dies nicht ausreicht - selbst mit UI Visualization (also ohne Grouping in der CollectionViewSource) dauert die Erstellung von 50 Visual Container aus den Objekten (selbst wenn es a) reine Datenhalterobjekte und b) nur 3 Bindings sind) viel zu lange - die Applikation friert mal eben 3-5 Sekunden ein.

Datavisualization habe ich auch bereits ins Auge gefasst, aber dies würde nur bei Mengen von sehr viel größer der anzeigten Menge wirklich etwas bringen (Im Moment werden 50 Rows angezeigt wenn die Anwendung in Standardgröße arbeitet).

Die Frage ist nun - was übersehe ich? Wo besteht die Möglichkeit, zu optimieren? Auf Seiten des ViewModels gibt es wirklich nichts mehr was ich machen kann - in der Zeit, die wirklich zur Berechnung benötigt wird, habe ich bereits einen Loadingindicator, der fröhlich anzeigt, dass gearbeitet wird, erst wenn es um die Anzeige der Daten geht, kollabiert das Ganze.

bump... Ich hoffe es macht euch nichts aus, dass ich es auch noch auf SO gepostet hab:

Application freezing while creating visual container for DataGrid rows

Wenn es dort zu einer Lösung kommt, werde ich diese selbstverständlich auch hier posten!