WPF / .NET 4を使用していますが、VirtualizingStackPanel.VirtualizationMode = "Recycling"プロパティをリストボックスに追加すると、スクロール時に同じリストアイテムが何度も繰り返されます。たとえば、100個のアイテムを含むリストボックスがあり、一度に10個が表示されているとします。ListBoxが最初に読み込まれると、アイテム1〜10が表示されますが、下にスクロールして残りのアイテム11〜100を表示すると、下にスクロールするとアイテム1〜10が何度も繰り返されるため、アイテムを表示できなくなります。 11-100。[リサイクル]を[標準]に戻すと、すべてが正しく機能しますが、スクロールが非常に遅くなります(ListItemはかなり複雑で、いくつかの画像、テキストフィールド、ボタンが含まれています)。リサイクルがオンの場合、スクロールは非常に高速ですが、アイテム1〜10しか表示できません。s間違っているか、それを修正する方法は?前もって感謝します。
3105 次
1 に答える
6
リサイクルモードは、その名前が示すように、レンダリングされたListBoxItemsを再利用することで機能します。リストからスクロールアウトしたアイテムを表示するためにListBoxアイテムが不要になると、ListBoxはそれを再利用して、スクロールして表示されたアイテムを表示します。
ListBoxItemの表示内容を変更するには、ListBoxのDataContextプロパティを新しいアイテムに設定するだけです。これには、ListBoxItemのコンテンツがDataContextChangedイベントに正しく応答する必要があります。データバインディングのみを使用してコントロールにデータを入力している場合、これは自動的に行われます。ただし、コメントが示すように、プロパティを更新するためにコードビハインドを使用している場合は、イベント処理コードがその役割を果たしていることを確認する必要があります。
于 2011-07-06T13:38:50.903 に答える