使用多个项目预加载WPF listview

使用多个项目预加载WPF listview,wpf,dependency-injection,prism,mef,Wpf,Dependency Injection,Prism,Mef,我正在使用Prism和MEF创建WPF GUI。我很想知道是否有一种方法可以在用户查看WPF控件之前预先填充它 具体来说,我有一个UserControl,它使用ListView来显示通过WCF上的网络调用检索到的大约8000个项目的列表 我已经确定瓶颈不是网络调用,而是ListView本身的创建。WPF ShellViewModel当前执行网络预取,以便所有必需的数据都显示在客户端,但由于我正在使用Prism/MEF的依赖项注入,因此只有在用户单击包含此ListView的选项卡并随后在创建Lis

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

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

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

是否有办法将此ListView创建移动到应用程序的引导阶段?我希望在用户单击该视图之前加载/填充该视图,以便不存在“延迟”

减少要查看的项目数量不是一个选项

谢谢。

试试看,听起来这正是你需要的。

试试看,听起来这正是你需要的。

试试看

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

...
试试这个

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

...

listbox默认为虚拟化,除非ItemsPanel指定了非虚拟化面板。谢谢,Sebastian。我从未听说过WPF提供这样的功能。看起来可以很好地工作。默认情况下,listbox是虚拟化的,除非ItemsPanel指定了非虚拟化面板。谢谢,Sebastian。我从未听说过WPF提供这样的功能。看起来这会很好地工作。您可以发布listview、datatemplate等的xaml和项目类吗?您可以发布listview、datatemplate等的xaml和项目类吗