调整包含许多项的ScrollViewer的大小非常慢

时间:2012-07-18 20:58:55

标签: c# wpf performance resize scrollviewer

我有ScrollViewer包含StackPanel,其中包含超过1000个项目,每个项目都包含一堆其他项目。它在空闲时或当我实际滚动它时表现得像一个冠军。但是,当我调整大小或导致其调整大小的任何内容(例如包含顶级窗口)时,它会变得非常缓慢,冻结,并且需要大约30秒才能解冻并调整大小。

我发现在调整大小之前将VerticalScrollBarVisibility设置为ScrollBarVisibility.HiddenScrollBarVisibility.Disabled会使其非常顺畅。但是,启用和禁用ScrollBarVisibility每个大约需要5秒钟,这比等待30秒调整大小要好,但是等待时间仍然太长。

我可以做些什么来帮助调整包含多个项目的StackPanelScrollPanel的大小调整后的效果?

1 个答案:

答案 0 :(得分:1)

您可能会考虑切换到列表框(我知道,听起来很奇怪,但是听我说)。列表框使用虚拟化堆栈面板 - 它管理实际在内存中的控件数量,并在滚动时创建它们。

您可以使用datatemplate使每个列表框项看起来像您想要的任何内容。

(请注意,这都是假设您正在显示某种重复数据)。