我制作了一个简单的图表,将堆叠面板放在画布上,然后根据给出的数据用标签填充堆栈面板。但是我对性能不是很满意。
如果我用列表框更改堆栈面板,而不是添加标签,那么渲染数据会更快吗?我需要显示的数据是来自大量字符串列表的子集。当我移动索引时,我必须清除所有列表框并用新数据填充它们。 或者有更快的方法吗?
我的所有字符串都是4个字符。是否可以将方向更改为垂直方向,以便每个列表框显示类似
的内容A
A
A
A
乙
乙
乙
乙
C
C
C
C
d
d
d
d
...等 字符串是AAAA,BBBB,CCCC,DDDD。
答案 0 :(得分:1)
您可能需要记住的一些事情:
答案 1 :(得分:1)
我认为您需要ItemsControl
,而不是ListBox
(无需选择项目)。
问题在于您的开销是否值得。 ItemsControl
的权重比StackPanel
更重(正如H.B.所说,它通常包含StackPanel
)。使用ItemsControl
的原因是UI虚拟化。如果许多项目滚动离开屏幕,ItemsControl
通常(并非总是取决于控件模板)只会为屏幕上的项目生成视觉效果。这节省了大量的处理时间。
如果您想要原始速度,请创建DrawingVisual
,在此视觉效果上调用RenderOpen()
,使用DrawingContext
绘制项目,然后在DrawingVisual
内显示Canvas
。