2012-09-02 67 views
-1

我想测量VirtualizingStackPanel的性能。以下是我正在使用的步骤。如何测量VirtualizingStackPanel性能

  • 创建1000个项目,没有虚拟化UI将冻结,这非常简单。
  • 我可以使用snoop来表明它加载仅可见

现在我想证明,当我滚动,只加载其他几个项目的项目。有什么事情可以用来证明这一点吗?有没有其他办法可以证明这一点?

请指导。

回答

0

为什么你需要证明这一点?将新属性添加到您的结构中,例如IsNotInMemory。您可以添加到您的ItemsTemplate:

     <CheckBox x:Name="win" IsChecked="{Binding IsNotInMemory, Mode=OneWayToSource}" 
           Visibility="Collapsed" 
           > 

然后,您可以添加其他的ListBox已禁用虚拟化,它直接与反对IsNotInMemory。然后你可以看到哪些项目当前在内存中,哪些不是。当您在第一个列表框中滚动时,您会看到项目正在逐个加载到内存中(EG TRUE变为false)。

或者,您可以将自己挂载到已加载& DataTemplate的Unloaded事件。请注意,如果您使用VirtualizingMode = Recycling,则可能无法获取任何Unloaded事件,因为它们正在被回收。您也可以将自己挂钩到此案例中的DataContextChanged事件。