Tengo un que ItemsControlcontiene una lista de datos que me gustaría virtualizar, sin embargo VirtualizingStackPanel.IsVirtualizing="True", no parece funcionar con un ItemsControl.
¿Es este realmente el caso o hay otra forma de hacerlo que no conozco?
Para probar he estado usando el siguiente bloque de código:
<ItemsControl ItemsSource="{Binding Path=AccountViews.Tables[0]}"
VirtualizingStackPanel.IsVirtualizing="True">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Initialized="TextBlock_Initialized"
Margin="5,50,5,50" Text="{Binding Path=Name}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Si cambio el ItemsControla a ListBox, puedo ver que el Initializedevento solo se ejecuta un puñado de veces (los enormes márgenes son solo para que solo tenga que revisar algunos registros), sin embargo, a medida ItemsControlque se inicializa cada elemento.
He intentado configurar el ItemsControlPanelTemplatea VirtualizingStackPanelpero eso no parece ayudar.

ItemsControlenScrollViewerinstread añadiendoScrollaControlTemplate?Basándose en la respuesta de DavidN, aquí hay un estilo que puede usar en un ItemsControl para virtualizarlo:
No me gusta la sugerencia de usar un ListBox ya que permiten la selección de filas donde no necesariamente lo quieres.
fuente
Es solo que el valor predeterminado
ItemsPanelno es aVirtualizingStackPanel. Necesitas cambiarlo:fuente