Problem: Die Anzeige großer Datenmengen in einem scrollbaren Bereich hat eine schreckliche Leistung und/oder Benutzererfahrung.Problem mit der Virtualisierungsleistung bei großen scrollbaren Daten SL4
Versucht: Legen Sie ein DataTemplate in einer ListBox fest, um ein Raster mit aufgefüllten Daten anzuzeigen, wobei der VirtualizationMode auf Recycle und eine feste Höhe auf der ListBox festgelegt ist. So etwas wie das Beispiel unten.
<ListBox x:Name="Items"
TabNavigation="Once"
VirtualizingStackPanel.VirtualizationMode="Recycling"
Height="500">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Margin="0,5">
<HyperlinkButton Content="Action" Margin="5"/>
<ContentControl
cal:View.Model="{Binding}"
VerticalContentAlignment="Stretch"
HorizontalContentAlignment="Stretch"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Die Content würde in einem Standard-<Grid>
aus einer anderen Ansicht, die die allgemeine Anordnung der Elemente bevölkerten Formate bringen, bestehend aus etwa 20 statisch, und 20 Daten gebunden Textblöcken.
Dies funktioniert in Ordnung, und die anfänglichen Lasten halbieren. JETZT, jetzt ist das Problem, ich brauche die Fähigkeit für die Höhe, um nicht eine feste Größe zu sein, so nimmt es den Raum, der in seinem Elternteil zur Verfügung steht und kann sogar die Größe geändert werden. Dank @DanFox
habe ich herausgefunden, dass Sie die Höhe in der einen oder anderen Form korrigieren müssen, um die Virtualisierung aufzurufen, oder die RenderEngine denkt einfach, dass sie sowieso unendlichen Raum hat.
Die Frage ist: Gibt es eine bessere Möglichkeit, dies zu tun, oder wie kann ich zumindest die aktuelle Technik beheben, um bessere UX zu ermöglichen? Ich erzeuge möglicherweise Hunderte von diesen Elementen, also brauche ich die Leistungssteigerung der Virtualisierung. Allerdings muss ich dem Benutzer auch erlauben, die Größe des Fensters zu ändern und die Fähigkeit zum Scrollen effektiv beizubehalten.
Jeder Einblick wird sehr geschätzt, danke und frohe Feiertage!
Haben Sie versucht, die Höhe des ScrollViewers und anderer Komponenten vorübergehend zu korrigieren? Manchmal kann der Leistungsabfall dadurch verursacht werden, dass die Layout-Engine dem ScrollViewer eine unendliche Höhe verleiht. Entschuldigung, ich kann nicht expliziter sein, ich bin in diesem Bereich ein wenig eingerostet, habe seit einiger Zeit keinen SL mehr gemacht ... –
Werden deine Daten schnell geladen? An welchen Sammlertyp sind Sie gebunden? –
@Dan Fox Also nur hartes Fixieren der Höhe des Scrollviewers könnte die Rendering-Geschwindigkeit beeinflussen? –