This article requires update, please wait for it. For those who can’t wait, the problem is that you need to define an additional dependency property for empty template. You cannot simply set control template to null. I apologize for the inconvenience.
In the previous post I have shown how to fake “empty ListBox template” using visual states. The proposed solution is very intrusive since it requires editing the built-in (or customized) control template. You have to design the template carefully to avoid any visual state corruption.
And if we want to introduce the third template, let’s say we want to have also “download in progress” template (similarly to the way Marketplace search works), the control template would become unmanageable. It would be best to completely separate each template from normal template, and this is exactly what we are going to do today.
The final result will give us something like this: