What is the difference between a stackpanel and a virtualizingstackpanel in WPF?
A VirtualizingStackPanel can offer performance benefits when working with very large collections. It does so by only rendering and processing a subset of the data which is visible to the user vs. processing the entire list of data. By creating only UI elements for the visible items, this can greatly reduce the amount of work it has to do.
This is really only handy though if
- You are data binding non-UI elements or elements for which UI must be created in the particular panel
- You are data binding a lot of data
A StackPanel on the other hand, will up front create the controls for all elements contained within the StackPanel.
The VirtualizingStackPanel MSDN page has a decent discussion: http://msdn.microsoft.com/en-us/library/system.windows.controls.virtualizingstackpanel.aspx
This is to do with the visual tree. The virtualizingstackpanel works with things like list boxes etc to reduce the size of the visual tree by only displaying visible items - this is useful where databinding is taking place.
来源:https://stackoverflow.com/questions/666108/what-is-the-difference-between-a-stackpanel-and-a-virtualizingstackpanel-in-wpf