WPF ListView 性能非常慢 - 为什么?(ElementHost,还是其他原因?) [英] WPF ListView Very Slow Performance - Why? (ElementHost, or Other Reason?)

查看:73
本文介绍了WPF ListView 性能非常慢 - 为什么?(ElementHost,还是其他原因?)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个 Windows 窗体应用程序,它有一个包含 WPF UserControl 的 ElementHost ......在我的 WPF 中,我有一个非常简单的 ListView:

I have a Windows Forms app, that has a single ElementHost containing a WPF UserControl... in my WPF, I have a VERY simple ListView:

<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>

如果我的源有 10 个项目,表单会在不到一秒的时间内加载.如果我的源有 1000 个项目,则需要 7 秒!!!我的计时器只考虑加载(而不是获取物品所需的时间).

If my source has 10 items, the form loads in less than one second. If my source has 1000 items, it takes 7 seconds!!! My timer is ONLY taking the loading into account (not how much time it takes to get the items).

所以我的问题是:

使用 ElementHost 是性能噩梦吗?

Is using an ElementHost a performance nightmare?

WPF 数据绑定是性能噩梦吗?

Is WPF DataBinding a performance nightmare?

ListView 是垃圾吗?(顺便说一句,与 WPFToolkit 的 DataGrid 结果相同)?

Is the ListView a piece of crap? (btw, same results with the WPFToolkit's DataGrid)?

推荐答案

使用虚拟化

<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> 

这篇关于WPF ListView 性能非常慢 - 为什么?(ElementHost,还是其他原因?)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆