2

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

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

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

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

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

谢谢。

4

2 回答 2

3

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

于 2012-05-04T07:18:41.910 回答
1

试试这个

<ListView ItemsSource="{Binding Your8kCollection}">
        <ListView.ItemsPanel>
            <ItemsPanelTemplate>
               <VirtualizingStackPanel />
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>
        ...
 </ListView>
于 2012-05-04T07:47:48.000 回答