在我们当前的WinForms应用程序中,我们使用虚拟化在ListView中显示数百万条记录。在请求时从DB加载行。这很好,性能很好。
这是为我们迁移到WPF的showstopper。我们需要在ListView中进行数据虚拟化,就像WinForms 2.0一样。
您是否了解一个体面的第三方控件,或者使用内置控件进行相对简单的方法?它不需要是一个DataGrid,一个简单的ListView就足够了。
注意,我注意到的是UI虚拟化,它是数据虚拟化。
答案 0 :(得分:13)
文章WPF Data Virtualization应该正是您正在寻找的内容,我只是很容易实现它,并且它有效。
答案 1 :(得分:2)
Xceed DataGrid for WPF支持数据虚拟化。
答案 2 :(得分:1)
这是来自Xceed的Ultimate ListBox for WPF的说明:
智能虚拟化后台数据检索:
自动数据检索仅在远程数据源可见时才会获取记录(数据虚拟化)。这大大减少了要传输的数据量,这增加了列表框的感知速度。还可以减轻服务器的压力。
答案 3 :(得分:1)
只需在XAML的列表视图声明中添加以下属性即可。
<ListView
VirtualizingPanel.IsVirtualizing="True"
VirtualizingPanel.IsVirtualizingWhenGrouping="True"
VirtualizingPanel.VirtualizationMode="Recycling"
ScrollViewer.IsDeferredScrollingEnabled="True" >
</ListView>