I have a item control which is bound to Tasks. Each task has task state. I have defined different data templates for each task state, and also data template selector.
<
A DataTemplateSelector does not respond to PropertyChange notifications, so it doesn't get re-evaluated when your properties change.
The alternative I use is DataTriggers that changes the Template based on a property.
For example, this will draw all TaskModel objects using a ContentControl, and the ContentControl.Template is based on the TaskStatus property of the TaskModel