1

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

处理这种情况的方法是什么?如何更改控件的可见性?并高度赞赏参考或建议。

请注意,我标记了 WPF 和 Silverlight,因为绑定在它们中以相同的方式发生,预计它们已经处理了这样的场景。

编辑检查这个问题,这是我问的。由于在列表框中有用户控件,因此没有维护垂直偏移量。所以我别无选择,只能在它周围使用带有 scrollViewer 的 ItemsControl。ItemsControl 包含 5 - 6 个用户控件的列表,其中实习生在其中有 itemsControls,我认为在这种情况下可能不会发生虚拟化。我对吗?

4

2 回答 2

2

在 WPF 中,这是由虚拟化完成的

使用,实际上只创建Virtualization了一个副本(或几个副本) ,而切换到另一个用户控件实际上只是换出了控件绑定到的那个。它实际上并没有创建一个新的.UserControlDataContextUserControl

例如,如果您有VirtualizingStackPanel100,000 个项目,并且一次只有 10 个可见,它只会渲染大约 14 个项目(滚动缓冲区的额外项目)。当您滚动时,DataContext这 14 个控件后面的控件会更改,但实际控件本身永远不会被替换。相比之下,常规StackPanel加载时实际上会渲染 100,000 个项目,这会大大降低应用程序的性能。

这个关于虚拟化 ItemsControl 的问题可能会让您朝着正确的方向前进。

于 2012-04-23T19:54:54.030 回答
1

看看这个帖子,我相信 Rico 提供的解决方案就是你要找的。:)

于 2012-04-24T05:20:55.347 回答