2012-09-02 68 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事件。