0

看来我在互联网上无法很好地解决这个问题,所以我问你们。我想知道在它的自定义面板的测量方法中使用 ItemsContainerGenerator 和不调用容器上的 Recycle 有什么区别。

我的猜测是,一旦调用 GenerateNext 方法,生成器就会创建新容器并将它们连接到数据项,但是生成器是否总是在 GenerateNext 方法中将项目连接到它们的容器?我的意思是始终将容器连接到项目,它是否将已经生成/实现的容器再次链接到它们的数据项?

如果我通过调用 recycle() 方法开始回收容器会发生什么。那么生成器是否仍然总是将容器链接到项目?

我问这个是因为滚动性能通常取决于此。如果生成器总是将项目连接到容器,这意味着它会刷新 DataContext/Binding,并且滚动会有点滞后。虽然如果通过使用回收方法生成器停止刷新绑定,滚动将运行得非常顺利。

4

1 回答 1

0

当您使用 Recycling 虚拟化模式时,容器被重用,因此它们也不必连接到它们的原始数据对象。因此,如果您的容器模板包含将在数据(或其类型或属性)更改时重建其可视化树的元素 - 它们会。为了提高性能,我建议您创建独立于数据更改模板,尽可能减少可视化树。您还可以修改您的 ClearContainer 方法以防止重置一些不依赖于数据的全局值:它可以是对一些大型父控件、设置的引用 - 任何通常不变但会在更改时影响可视树的任何内容。

于 2013-06-22T00:52:01.133 回答