Colocando a virtualização da interface do usuário trabalhando com ItemsControl no Silverlight

Estou tentando criar uma lista de rolagem de blocos de texto bastante grandes. Quero que exista uma barra de rolagem vertical para mostrar a todos, e se eles excederem um determinado tamanho, quero que eles exibam reticências. Na verdade, tenho tudo isso funcionando muito bem.

Eu tenho o seguinte 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>

Meu problema é que esse layout não usa a virtualização da interface do usuário, como em um VirtualizingStackPanel. Então é bem lento. Qual é a melhor maneira de obter a virtualização da interface do usuário nesse layout? Eu tentei cerca de meia dúzia de maneiras diferentes e nada funcionou tão bem.

Eu consegui fazer isso funcionar em um ListBox porque parece oferecer suporte à virtualização imediatamente. No entanto, eu preferiria usar o ItemsControl, pois não quero que essas coisas sejam selecionáveis e não quero o estilo que acompanha uma ListBox.

Isso no Silverlight 4.

questionAnswers(1)

yourAnswerToTheQuestion