UI-Virtualisierung mit ItemsControl in Silverlight ausführen

Ich versuche eine Liste mit ziemlich großen Textblöcken zu erstellen. Ich möchte, dass es eine vertikale Bildlaufleiste gibt, die sie alle anzeigt, und wenn sie eine bestimmte Größe überschreiten, möchte ich, dass sie eine Ellipse anzeigen. Ich habe eigentlich alles ziemlich gut funktioniert.

Ich habe die folgende Silverlight-XAML:

<Grid x:Name="LayoutRoot" MaxWidth="500" MinWidth="100"
    MaxHeight="500" MinHeight="100">
    <Grid.DataContext>
        <app:MainPageViewModel/>
    </Grid.DataContext>
    <ScrollViewer>
    <ItemsControl ItemsSource="{Binding TextItems}" Margin="0,20,0,20">
        <ItemsControl.ItemTemplate><DataTemplate>
            <Border MaxHeight="175" Margin="0,0,0,18" CornerRadius="5">
                <TextBlock Margin="2" TextTrimming="WordEllipsis"
                     TextWrapping="Wrap" Text="{Binding}"/>
            </Border>
         </DataTemplate></ItemsControl.ItemTemplate>
    </ItemsControl>
    </ScrollViewer>
</Grid>

Mein Problem ist, dass dieses Layout keine UI-Virtualisierung verwendet, z. B. mit einem VirtualizingStackPanel. Es ist also ziemlich langsam. Wie lässt sich die UI-Virtualisierung am besten in dieses Layout integrieren? Ich habe ungefähr ein halbes Dutzend verschiedene Methoden ausprobiert und nichts hat so gut geklappt.

Ich habe es geschafft, dies in einer ListBox zum Laufen zu bringen, da es die Virtualisierung von Anfang an zu unterstützen scheint. Ich würde es jedoch vorziehen, ItemsControl zu verwenden, da ich nicht möchte, dass diese Dinge auswählbar sind, und ich möchte nicht, dass das mit einer ListBox verbundene Styling verwendet wird.

Dies in Silverlight 4.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage