由于数据绑定导致页面转换缓慢

时间:2012-04-23 15:21:29

标签: wpf silverlight windows-phone-7 data-binding windows-phone-7.1

我正在使用wp7制作搜索应用。每条记录的数据都绑定到用​​户控件。我已经介绍了无限加载而不是页码。因此,当在屏幕中增加UserControl的实例数时,从一个页面到另一个页面的转换(如预览或设置页面)或从该页面返回到当前页面的速度变慢。我无法改变设计(无限加载概念)。

处理此方案的方法有哪些?如何改变控件的可见性?参考或建议将受到高度赞赏。

注意我标记了WPF和Silverlight,因为绑定在它们中发生的方式相同,期望那些处理这些方案的人。

编辑检查question,这是我提出的问题。由于在列表框中具有UserControl,因此不保持垂直偏移。所以我除了使用带有scrollViewer的ItemsControl之外别无选择。 ItemsControl包含5到6个用户控件的列表,其中实习生有itemsControls,我认为在这种情况下可能不会发生虚拟化。我是对的吗?

2 个答案:

答案 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提供的解决方案正是您所寻找的。 :)