WPF: List boxes and virtualization

前端 未结 4 589
孤独总比滥情好
孤独总比滥情好 2020-12-16 00:11
  1. How do I know whether or not my list is being virtualized?
  2. How do I make this snippet virtualized?

    
    
            
相关标签:
4条回答
  • 2020-12-16 00:49

    According to the MSDN forums, All databound listboxes are virtualized

    You can check what's going on in your app using Snoop - Mouse over your listbox (or one of the items) and look at the properties. One of them is VirtualizingStackPanel.IsVirtualizing - it will be checked if the list is virtualized, and unchecked if not

    0 讨论(0)
  • 2020-12-16 00:50

    Your code sample does not virtualize because you are forcing the use of a StackPanel. You have to use a VirtualizingStackPanel.

    0 讨论(0)
  • 2020-12-16 00:52
    1. If you want to know for certain. Download Snoop it has a 3d view that you can use to see every element that is rendered. (on and off screen) If your list box is not virtualised you will see all the list items marching off the page in a lovely 3d view.

    It is an essential tool for the wpf developer as it has a couple of other really handy features as well

    1. Get rid of that list box template that uses a stack panel. If all it is doing is making the background black, then just set the background black.
    0 讨论(0)
  • 2020-12-16 01:09

    To know if it is virtualized you can simply add 10K dummy entries to the collection and see how fast the loading happens as well as how fast the vertical scroll works which will clearly tell a big difference. I guess you need to change your StackPanel in the control template to VirtualizingStackPanel.

    0 讨论(0)
提交回复
热议问题