我想测量VirtualizingStackPanel的性能。以下是我正在使用的步骤。
现在我要证明当我滚动时,它仅加载其他几个项目。有什么事情我可以用来证明这一点吗?有没有其他方法可以证明这一点?
请指导。
答案 0 :(得分:0)
为什么你需要证明这一点?向结构中添加新属性,例如IsNotInMemory。您可以将其添加到ItemsTemplate:
<CheckBox x:Name="win" IsChecked="{Binding IsNotInMemory, Mode=OneWayToSource}"
Visibility="Collapsed"
>
然后,您可以添加另一个已禁用虚拟化的ListBox,它将直接绑定到IsNotInMemory。然后,您可以看到哪些项目当前在内存中,哪些项目不在内存中。当您在第一个列表框中滚动时,您会看到项目被逐个加载到内存中(EG TRUE变为false。)
或者你可以将自己挂钩到DataTemplate的Loaded&amp; Unloaded事件中。请注意,如果您使用VirtualizingMode = Recycling,您可能不会收到任何Unloaded事件,因为它们正在被回收。在这种情况下,您也可以将自己挂钩到DataContextChanged事件中。