wpf performance listview datagrid elementhost

WPF ListView Rendimiento muy lento-¿Por qué?(ElementHost, u otra razón?)



performance datagrid (2)

Tengo una aplicación de Windows Forms, que tiene un ElementHost único que contiene un WPF UserControl ... en mi WPF, tengo un ListView muy simple:

<ListView Margin="4" ItemsSource="{Binding Notifications}"> <ListView.View> <GridView> <GridViewColumn Header="FirstName" DisplayMemberBinding="{Binding FirstName}" /> <GridViewColumn Header="LastName" DisplayMemberBinding="{Binding LastName}" /> <GridViewColumn Header="Address" DisplayMemberBinding="{Binding Address}" /> <GridViewColumn Header="City" DisplayMemberBinding="{Binding City}" /> <GridViewColumn Header="State" DisplayMemberBinding="{Binding State}" /> <GridViewColumn Header="Zip" DisplayMemberBinding="{Binding Zip}" /> </GridView> </ListView.View> </ListView>

Si mi fuente tiene 10 elementos, el formulario se carga en menos de un segundo. Si mi fuente tiene 1000 elementos, ¡tardan 7 segundos! Mi temporizador SÓLO está teniendo en cuenta la carga (no cuánto tiempo lleva obtener los artículos).

Entonces mi pregunta es:

¿Usar un ElementHost es una pesadilla de rendimiento?

¿WPF DataBinding es una pesadilla de rendimiento?

¿El ListView es una mierda? (Por cierto, los mismos resultados con DataGrid de WPFToolkit)?



Usa la virtualización

<ListView ItemsSource="{BindingNames}"Name="lv"> <ListView.ItemsPanel> <ItemsPanelTemplate> <!--<StackPanel/> If StackPanel was used, the memory consumed was over 2GB and dead slow. --> <VirtualizingStackPanel> <!--Memory footprint is only 200 mb--> </VirtualizingStackPanel> </ItemsPanelTemplate> </ListView.ItemsPanel> <ListView.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding}"/> </DataTemplate> </ListView.ItemTemplate> </ListView>