- ¿Cómo puedo saber si mi lista se está virtualizando o no?
¿Cómo virtualizo este fragmento?WPF: cuadros de lista y virtualización
<ScrollViewer Grid.Column="1" Name="LogScroller"> <r:NoInheritanceContentControl> <ListBox Background="Black" ItemsSource="{Binding Path=ActiveLog}" > <ListBox.ItemTemplate> <DataTemplate> <Grid Background="Black"> <Grid.ColumnDefinitions> <ColumnDefinition Width="200"></ColumnDefinition> <ColumnDefinition Width="*"></ColumnDefinition> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition></RowDefinition> <RowDefinition></RowDefinition> </Grid.RowDefinitions> <TextBlock Grid.Column="0" Grid.Row="0" Foreground="White"> <TextBlock >Date:</TextBlock> <TextBlock Text="{Binding Path=LogDate}"/> </TextBlock> <TextBlock Grid.Column="1" Grid.Row="0" Foreground="White"> <TextBlock >Severity:</TextBlock> <TextBlock Text="{Binding Path=Severity}"/> </TextBlock> <TextBlock Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="1" Foreground="LightGray" Text="{Binding Path=Message}"></TextBlock> </Grid> </DataTemplate> </ListBox.ItemTemplate> <ListBox.Template> <ControlTemplate> <StackPanel Background="Black" IsItemsHost="True" > </StackPanel> </ControlTemplate> </ListBox.Template> </ListBox> </r:NoInheritanceContentControl> </ScrollViewer>
Respuesta
Su muestra de código no se virtualiza porque está forzando el uso de un StackPanel
. Tienes que usar un VirtualizingStackPanel
.
According to the MSDN forums, All databound listboxes are virtualized
Puede comprobar lo que está pasando en su aplicación utilizando Snoop - ratón por encima de su cuadro de lista (o uno de los elementos) y mirar las propiedades. Uno de ellos es VirtualizingStackPanel.IsVirtualizing
- se comprobará si la lista está virtualizada, y si no está marcada
¿Tiene usted nay otros programas para probar? Desafortunadamente, Snoop no funciona con .NET 4. –
Además, leí en otro lugar que los ListBox solo virtualizan de forma predeterminada. Una vez que comienzas a sobreescribir cosas, puedes perder el efecto. –
@jonathan allen (¿o lo escribes @ jonathan-allen por el espacio?) Snoop ahora es compatible con .NET 4.0. (Sí, sé que esto es muy antiguo, pero bueno ... ¡algunas personas pueden no saberlo!) – MarqueIV
Para saber si está virtualizado, simplemente puede agregar 10K entradas ficticias a la colección y ver qué tan rápido ocurre la carga, así como qué tan rápido funciona el desplazamiento vertical, lo que claramente marcará una gran diferencia. Supongo que necesita cambiar su StackPanel
en la plantilla de control al VirtualizingStackPanel
.
Definitivamente intentaré eso, pero sin una respuesta al # 1 no sabré si funciona. –
Sabrá si no es así. –
- Si quiere saber con certeza. Descargue Snoop tiene una vista en 3D que puede usar para ver cada elemento que se representa. (pantalla activada y desactivada) Si su cuadro de lista no está virtualizado, verá todos los elementos de la lista que marchan fuera de la página en una hermosa vista en 3D.
Es una herramienta esencial para el desarrollador WPF ya que tiene un par de otras características muy útiles, así
- deshacerse de la plantilla de cuadro de lista que utiliza un panel de pila. Si todo lo que hace es oscurecer el fondo, simplemente configure el fondo como negro.
Si no incluyo la plantilla, la rueda de desplazamiento del mouse no funciona. Lo cambié a VirtualizingStackPanel. –
Desearía poder usar Snoop, pero no puedo hacer que funcione contra .NET 4. –
throw a NotFairNoSnoopImplementedException()): –
- 1. WPF Virtualización de un lienzo
- 2. Virtualización de WPF Wrap Panel Edición
- 3. tornillos de virtualización ListBox WPF artículos
- 4. WPF ListBox con ListBox - Virtualización de UI y Desplazamiento
- 5. Recursos y guías para la virtualización de IU en WPF
- 6. Cómo ocultar cuadros de texto, etiquetas y botones C# WPF
- 7. Virtualización de ItemsControl?
- 8. Comprensión de la virtualización
- 9. Necesito una muestra para WPF Búsqueda en TreeView con Virtualización y carga bajo demanda
- 10. botón WPF Activar cuadros de eventos/Uchecked con un manejador
- 11. MVVM Light - Vistas y cuadros de diálogo
- 12. Aplicar UpdateSourceTrigger = PropertyChanged a todos los cuadros de texto wpf
- 13. ¿Prevenir la virtualización de UAC?
- 14. WiX 3.0: Lista de cuadros de diálogo UI disponibles
- 15. DataBind cuadro de lista elemento seleccionado a cuadros de texto
- 16. Problemas de virtualización de Wpf DataGrid al vincular a la propiedad DataGridRow.IsSelected
- 17. jQuery móvil y cuadros de diálogo emergentes
- 18. Ventanas emergentes y cuadros de diálogo jQuery
- 19. Detectando la virtualización del registro
- 20. SVN, TeamCity requisito virtualización/hardware
- 21. ¿Cuál es la diferencia entre un panel de distribución y un panel virtual de virtualización en WPF?
- 22. Lista de fuentes WPF incorporadas
- 23. Virtualización y por qué es bueno para los programadores
- 24. Virtualización y computación en la nube: ¿por dónde empezar?
- 25. Encuadernación en cuadros de texto no funcionan
- 26. ¿Cómo se implementa la virtualización de aplicaciones?
- 27. Desplazamiento a un elemento de virtualización ItemsControl
- 28. Diferencia entre la vista de lista y DataGrid en WPF?
- 29. Virtualización de Listview y anulación de la selección de todos los elementos
- 30. Modelo-Vista-Presentador y cuadros de diálogo Modal .... ¿Cómo?
El enlace [bea.stollnitz blog] (http://bea.stollnitz.com/blog /), no parece ser relevante para la pregunta por más tiempo. Sospecho que la información se ha movido. –