gpt4 book ai didi

.net - WPF ListBox VirtualizingStackPanel.VirtualizationMode ="Recycling"导致相同的列表项始终出现

转载 作者:行者123 更新时间:2023-12-03 22:53:09 25 4
gpt4 key购买 nike

我正在使用 WPF/.NET 4,当我将 VirtualizingStackPanel.VirtualizationMode="Recycling"属性添加到我的 ListBoxes 时,它会导致滚动时一遍又一遍地重复相同的列表项。例如,假设我有一个包含 100 个项目的 ListBox,一次可见 10 个。当 ListBox 首次加载时,我看到项目 1 - 10,但是当我开始向下滚动以查看剩余项目 11 - 100 时,项目 1 - 10 在我向下滚动时一遍又一遍地重复,所以我永远无法查看项目11 - 100. 如果我将 Recycling 改回 Standard,那么一切正常,但滚动速度非常慢(我的 ListItems 相当复杂,其中包含多个图像、文本字段和按钮)。当回收打开时,滚动速度非常快,但我只能查看项目 1 - 10。关于什么是错误的或如何修复它的任何想法?提前致谢。

最佳答案

顾名思义,回收模式通过重用呈现的 ListBoxItem 来工作。当不再需要 ListBox 项来显示已滚动出列表的项时,ListBox 将重新使用它来显示已滚动到 View 中的项。

要更改 ListBoxItem 显示的内容,ListBox 只需将其 DataContext 属性设置为新项目。这要求 ListBoxItem 的内容必须正确响应 DataContextChanged 事件。如果您只使用数据绑定(bind)来填充控件,这将自动发生。但是,如果正如您的评论所暗示的那样,您正在使用一些代码隐藏来更新属性,那么您需要确保您的事件处理代码正在完成这项工作。

关于.net - WPF ListBox VirtualizingStackPanel.VirtualizationMode ="Recycling"导致相同的列表项始终出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4894351/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com