-1

VirtualizingStackPanelのパフォーマンスを測定したいと思います。以下は私が使用しているステップです。

  • 仮想化せずに1000個のアイテムを作成すると、UIがフリーズします。これは非常に簡単です。
  • Snoopを使用して、表示されているアイテムのみをロードすることを示すことができます

ここで、スクロールすると、他のいくつかのアイテムのみが読み込まれることを証明したいと思います。これを証明するために使用できるイベントはありますか?これを証明する他の方法はありますか?

ご案内ください。

4

1 に答える 1

0

なぜこれを証明する必要があるのですか?IsNotInMemory などの新しいプロパティを構造体に追加します。これを ItemsTemplate に追加できます。

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

次に、仮想化が無効になっている別の ListBox を追加して、IsNotInMemory に直接バインドできます。次に、現在メモリ内にあるアイテムとそうでないアイテムを確認できます。最初のリストボックスをスクロールすると、項目が 1 つずつメモリにロードされていることがわかります (EG TRUE は false になります)。

または、DataTemplate の Loaded&Unloaded イベントにフックすることもできます。VirtualizingMode=Recycling を使用すると、リサイクルされているため、Unloaded イベントが発生しない可能性があることに注意してください。この場合、DataContextChanged イベントに自分自身をフックすることもできます。

于 2012-09-02T15:58:03.697 に答える