Wpf 物品容器生成器和回收的问题

Wpf 物品容器生成器和回收的问题,wpf,wpf-controls,Wpf,Wpf Controls,看来我在网上找不到这个问题,所以我问你们。我想知道在自定义面板的测量方法中使用ItemsContainerGenerator与不调用容器上的回收有什么区别 我猜generator会在调用GenerateNext方法后创建新的容器并将它们连接到数据项,但generator是否总是在GenerateNext方法中将项连接到它们的容器?我的意思是,始终将容器连接到项目,它是否将已经生成/实现的容器再次链接到它们的数据项目 如果我通过调用recycle()方法开始回收容器,会发生什么。那么生成器是否仍然

看来我在网上找不到这个问题,所以我问你们。我想知道在自定义面板的测量方法中使用ItemsContainerGenerator与不调用容器上的回收有什么区别

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

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


我这样问是因为滚动性能完全取决于此。如果生成器总是将项目连接到容器,这意味着它会刷新DataContext/绑定,滚动会有一点延迟。虽然如果使用recycle方法,生成器停止刷新绑定,滚动将非常顺利。

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