我正在使用wp7制作搜索应用。每条记录的数据都绑定到用户控件。我已经介绍了无限加载而不是页码。因此,当在屏幕中增加UserControl的实例数时,从一个页面到另一个页面的转换(如预览或设置页面)或从该页面返回到当前页面的速度变慢。我无法改变设计(无限加载概念)。
处理此方案的方法有哪些?如何改变控件的可见性?参考或建议将受到高度赞赏。
注意我标记了WPF和Silverlight,因为绑定在它们中发生的方式相同,期望那些处理这些方案的人。
编辑检查question,这是我提出的问题。由于在列表框中具有UserControl,因此不保持垂直偏移。所以我除了使用带有scrollViewer的ItemsControl之外别无选择。 ItemsControl包含5到6个用户控件的列表,其中实习生有itemsControls,我认为在这种情况下可能不会发生虚拟化。我是对的吗?
答案 0 :(得分:2)
在WPF中,这是由虚拟化
完成的使用Virtualization
,实际上只创建了UserControl
的一个副本(或几个副本),切换到另一个用户控件实际上只是交换了控件所在的DataContext
势必。它实际上并不创建新的UserControl
。
例如,如果您有一个包含100,000个项目的VirtualizingStackPanel
,并且一次只能看到10个项目,则它只会呈现大约14个项目(滚动缓冲区的额外项目)。滚动时,这14个控件后面的DataContext
会被更改,但实际的控件本身永远不会被替换。相反,常规StackPanel
实际上会在加载时呈现100,000个项目,这会大大降低应用程序的性能。
关于Virtualizing an ItemsControl的这个问题可能会让你朝着正确的方向前进。
答案 1 :(得分:1)
看看this post,我相信Rico提供的解决方案正是您所寻找的。 :)