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