使用许多项预加载WPF listview

时间:2012-05-03 21:25:53

标签: wpf dependency-injection prism mef

我正在使用Prism和MEF来创建WPF GUI。我很想知道在用户查看之前是否有预先填充WPF控件的方法。

具体来说,我有一个UserControl,它使用ListView来显示通过WCF网络调用检索到的大约8000个项目的列表。

我已经确定网络调用不是瓶颈,而是ListView本身的创建。 WPF ShellViewModel当前执行网络预取,以便客户端上存在所有必需的数据,但由于我使用Prism / MEF的依赖注入,因此在用户单击包含此ListView的Tab并随后创建视图之前,视图不会创建创建ListView时“冻结”(填充8K项)。我怀疑视图依赖项的LazyLoading也是其中的一部分。

有没有办法将此ListView创建移动到应用程序的引导阶段?我希望在用户点击它之前加载/填充此视图,以便没有“滞后”。

减少要查看的项目数量不是一种选择。

感谢。

2 个答案:

答案 0 :(得分:3)

尝试Virtualization,听起来这正是您所需要的。

答案 1 :(得分:1)

试试这个

<ListView ItemsSource="{Binding Your8kCollection}">
        <ListView.ItemsPanel>
            <ItemsPanelTemplate>
               <VirtualizingStackPanel />
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>
        ...
 </ListView>