WPF ListView sehr schlechte Leistung bei großen Datenmengen

Ich habe eine sehr schlechte Leistung mit einer ListView in WPF, die ungefähr 30000 Datensätze verwendet. Soweit ich weiß, sollte die Virtualisierung aktiviert sein, da dies die Standardeinstellung ist (ich habe sie sogar explizit in der XAML aktiviert).

Die schlechte Leistung äußert sich folgendermaßen:

Sehr langsam (ein paar Minuten), um den ersten Bindevorgang durchzuführenSehr langsames Scrollen (über eine Minute)Sehr langsam (wieder deutlich mehr als eine Minute), wenn Sie eine Zeile auswählen.

Ich hatte gehofft, jemand würde sich die XAML ansehen und mir einige Gedanken machen.

<ListView Name="grdComms" Grid.Row="0" Grid.Column="0" SelectedItem="{Binding SelectedHeader}"
          VirtualizingStackPanel.IsVirtualizing="True" VirtualizingStackPanel.VirtualizationMode="Recycling"
          ScrollViewer.IsDeferredScrollingEnabled="True">
       <ListView.View>
            <GridView >
                  <GridViewColumn Header="Account Name" DisplayMemberBinding="{Binding Path=AccountName}" Width="150" />
                  <GridViewColumn Header="Account Number" DisplayMemberBinding="{Binding Path=AccountNumber}" Width="120" />
                  <GridViewColumn Header="Type" DisplayMemberBinding="{Binding Path=Type}" Width="80" />
                  <GridViewColumn Header="Delivery" DisplayMemberBinding="{Binding Path=Delivery}" Width="80" />
                  <GridViewColumn Header="Count" DisplayMemberBinding="{Binding Path=RequestCount}" Width="80" />
                  <GridViewColumn Width="80" Header="DeDupe">
                       <GridViewColumn.CellTemplate>
                           <DataTemplate>
                               <StackPanel Width="80">
                                   <CheckBox HorizontalAlignment="Center" IsChecked="{Binding Path=SelectedForProcessing, Mode=TwoWay}"/>
                                </StackPanel>
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                  </GridViewColumn>
             </GridView>
      </ListView.View>
</ListView>

Hinweis: Die ItemsSource ist im Code auf eine ObservableCollection festgelegt. Dies ist eine Sammlung von ziemlich einfachen Eigenschaften (ein paar Strings, ein Bool), die ein ViewModel auf das Model darstellen, das (wieder) Strings und Bools sind.

Ich lese, wo Leute ohne Probleme große Datensätze verwenden, aber die verschiedenen Dinge, die ich versucht habe, scheinen nicht zu funktionieren.

Wenn Sie weitere Informationen benötigen, lassen Sie es mich bitte wissen.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage