Hallo,
meine Anwendung veranschlagt viel mehr Arbeitsspeicher als ich für richtig halte. Ich habe dazu gelesen, dass das mit schlechtem Xaml-Code schnell mal passiert.
Ich lade ca. 3000 Datensätze, wobei es sich bei einem Datensatz um eine Klasse mit 26 Properties handelt, davon werden nur 10 angezeigt in einem DataGrid
Das braucht erstmal nur 69MB im Arbeitsspeicher
Wenn ich jetzt das DataGrid gruppiere (GroupStyles definiere), dann steigt der Arbeitspeicherverbraucher sobald ich eine! Gruppe im DataGrid expande um gut 50 bis 200MB und das dauert auch ein paar Sekunden je nachdem wieviel Elemente die Gruppe beinhaltet (300 ca. 8 Sekunden).
Ich habe den Code soweit runtergebrochen wie es ging, wenn ich diesen Code ins DataGrid einfüge, dann geht die Performance in den Keller wie beschrieben. Ansonsten ändere ich nichts.
Also die Daten und Gruppen sind alle schon vorhanden, der Code also definiert nur wie die Gruppen angezeigt werden sollen. Die TopLevelGroup kann auf- und zuklappen, die LowLevelGroup ist nur eine Art Gruppenbanner.
Auch wenn ich eine Gruppierung rausnehme und eines der beiden Level entferne gibt es diesselben Probleme, das heißt sowohl im TopLevelGroupStyle als auch im LowlevelGroupStyle muss derselbe Fehler drin sein.
In der untersten Ebene der Groups also im
Und ja nun ist wirklich nur noch das Grundgerüst für die Gruppen übrig und da hört bei mir auch das Verständnis dann leider auf.
Wisst ihr noch was?
Viele Grüße
meine Anwendung veranschlagt viel mehr Arbeitsspeicher als ich für richtig halte. Ich habe dazu gelesen, dass das mit schlechtem Xaml-Code schnell mal passiert.
Ich lade ca. 3000 Datensätze, wobei es sich bei einem Datensatz um eine Klasse mit 26 Properties handelt, davon werden nur 10 angezeigt in einem DataGrid
Das braucht erstmal nur 69MB im Arbeitsspeicher
Wenn ich jetzt das DataGrid gruppiere (GroupStyles definiere), dann steigt der Arbeitspeicherverbraucher sobald ich eine! Gruppe im DataGrid expande um gut 50 bis 200MB und das dauert auch ein paar Sekunden je nachdem wieviel Elemente die Gruppe beinhaltet (300 ca. 8 Sekunden).
Ich habe den Code soweit runtergebrochen wie es ging, wenn ich diesen Code ins DataGrid einfüge, dann geht die Performance in den Keller wie beschrieben. Ansonsten ändere ich nichts.
XML-Quellcode
- <Window.Resources>
- <SolidColorBrush x:Key="TopLevelGroup.Foreground" Color="#FFFFFFFF"/>
- <SolidColorBrush x:Key="TopLevelGroup.Background" Color="#FFE00917"/>
- <SolidColorBrush x:Key="LowLevelGroup.Foreground" Color="#FF88000F"/>
- <SolidColorBrush x:Key="LowLevelGroup.Background" Color="#FFE6A586"/>
- <Style x:Key="TopLevelGroupStyle" TargetType="{x:Type GroupItem}">
- <Setter Property="Margin" Value="0,0,0,5"/>
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="{x:Type GroupItem}">
- <Expander IsExpanded="False" Background="{StaticResource TopLevelGroup.Background}" BorderBrush="#FF92020C" Foreground="#FF000000" BorderThickness="1,1,1,5">
- <Expander.Header>
- <DockPanel>
- </DockPanel>
- </Expander.Header>
- <ItemsPresenter />
- </Expander>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
- </Window.Resources>
- <!--...im DataGrid-->
- <DataGrid.GroupStyle>
- <GroupStyle ContainerStyle="{StaticResource TopLevelGroupStyle}"/>
- <GroupStyle>
- <GroupStyle.HeaderTemplate>
- <DataTemplate>
- <Grid>
- </Grid>
- </DataTemplate>
- </GroupStyle.HeaderTemplate>
- </GroupStyle>
- </DataGrid.GroupStyle>
- <!--...im DataGrid-->
Also die Daten und Gruppen sind alle schon vorhanden, der Code also definiert nur wie die Gruppen angezeigt werden sollen. Die TopLevelGroup kann auf- und zuklappen, die LowLevelGroup ist nur eine Art Gruppenbanner.
Auch wenn ich eine Gruppierung rausnehme und eines der beiden Level entferne gibt es diesselben Probleme, das heißt sowohl im TopLevelGroupStyle als auch im LowlevelGroupStyle muss derselbe Fehler drin sein.
In der untersten Ebene der Groups also im
DockPanel
und Grid
habe ich auch noch was stehen, mit Bindings und unter anderem auch Berechnungen zu den Gruppenelementen, aber da liegt auch nicht das Problem, deshalb ist das leer.Und ja nun ist wirklich nur noch das Grundgerüst für die Gruppen übrig und da hört bei mir auch das Verständnis dann leider auf.
Wisst ihr noch was?
Viele Grüße
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Haudruferzappeltnoch“ ()