Hacer que la virtualización de la interfaz de usuario funcione con ItemsControl en Silverlight

Estoy tratando de crear una lista de desplazamiento de bloques de texto bastante grandes. Quiero que haya una barra de desplazamiento vertical para mostrarlos a todos, y si se desbordan un cierto tamaño, quiero que muestren puntos suspensivos. De hecho, todo esto funciona bastante bien.

Tengo el siguiente 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>

Mi problema es que este diseño no utiliza la virtualización de la interfaz de usuario, como con un VirtualizingStackPanel. Entonces es bastante lento. ¿Cuál es la mejor manera de obtener la virtualización de la interfaz de usuario en este diseño? He probado alrededor de media docena de formas diferentes y nada ha funcionado tan bien.

Logré que esto funcionara en un ListBox porque parece admitir la virtualización fuera de la caja. Sin embargo, preferiría usar ItemsControl ya que no quiero que estas cosas sean seleccionables, y no quiero el estilo que viene junto con un ListBox.

Esto en Silverlight 4.

Respuestas a la pregunta(1)

Su respuesta a la pregunta