Updated entire question to be more specific
I have a WPF application, when being loaded, it displays a circular loading indicator while another thread is getting data from server and manipulating the data.
This WPF application has an ItemsControl with about 500 items bounded to it, with more than 10 different templates. I have a template selector to determine which template to use depending on the item's property.
I have a checkbox, to show and hide certain textblocks in each item in the UI. When I check the checkbox, the UI will freeze for 10 seconds, then starts responding again with the textblocks. If I uncheck the checkbox, it will freeze for about 7 seconds, then the textblocks will disappear.
I know that I should use virtualization, but it does not work for me since each item does not have the same height. I've tried "Standard" VirtualizationMode, it is just slow when scrolling down, not usable for me, and "Recycle" won't work since the items do not have the same height.
Instead of having the UI to freeze for 7 - 10 seconds, I would like to display a loading indicator. I am not asking how to show the loading indicator when loading the app, but how to show the loading indicator when the UI is busy re-drawing.
Please advise, thanks!