Wpf 默认情况下,ListBox是虚拟的吗?

Wpf 默认情况下,ListBox是虚拟的吗?,wpf,listview,Wpf,Listview,我有一个WPF列表框,里面有一些用户卡。 创建其中一张用户卡时(理想情况下,当当前用户从网络收到其好友列表时),它会向网络请求用户信息。 当我在列表框中滚动,等待几秒钟,然后向后滚动时,用户卡将处于默认状态。 调试后,我注意到它们被卸载并重新创建 如何阻止ListBox虚拟化这样的项目 代码: <ListBox x:Name="friend_list" Background="{x:Null}" BorderBrush="{x:Null}">

我有一个WPF列表框,里面有一些用户卡。
创建其中一张用户卡时(理想情况下,当当前用户从网络收到其好友列表时),它会向网络请求用户信息。
当我在列表框中滚动,等待几秒钟,然后向后滚动时,用户卡将处于默认状态。
调试后,我注意到它们被卸载并重新创建

如何阻止ListBox虚拟化这样的项目


代码:

            <ListBox x:Name="friend_list" Background="{x:Null}" BorderBrush="{x:Null}">
                <ListBox.ItemTemplate>
                    <DataTemplate DataType="data:User">
                        <stuff:UserCard UserID="{Binding Path=UserID}" HorizontalAlignment="Stretch" Margin="0,0,0,0" />
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>


列表框上设置为false
或将正常设置为。

也是的,默认情况下列表框是虚拟的,您不应该禁用UI虚拟化。无论如何,列表框中的项目不会太多。此外,该应用程序的用户肯定会拥有功能强大的计算机。几千字节(甚至兆字节)的内存对他们来说算不了什么。我不明白。我看到了ListBox和ItemTemplate,但我不知道它是从哪里获取项目的。拥有良好机器的用户没有理由实现糟糕的应用程序,因为开发人员这样做有很多WPFhaters@Joulukuusi. 坏主意。应该有一个ViewModel来保留数据,而不使用UI虚拟化,这样可以提高应用程序性能。