I need to use both a ControlTemplate and a DataTemplate at the same time - I think.

I have a TabControl who's TabItems are supplied by an ObservableCollection - I can design the ObservableCollection items anyway that I choose.

The TabItems need to use a ControlTemplate because they have a selected, not-selected, and disabled state so they need to have event triggers to switch states - the selected tab has an orange glass button and the non-selected tabs have a blue glass button. Each tab needs to have an icon (image) that is inside the respective glass button and also a tab label which are different for each tab and which are supplied by the ObservableCollection.

If I understand correctly, one can use either a ControlTemplate or a DataTemplate but not both at the same visual tree level.

The only potential solution that I can think of is to define a single ContentPresenter in a TabItem ControlTemplate - the ContentPresenter (with an image and label) would be defined by a DataTemplate which would receive data form the ObservableCollection.

Any pointers, suggestions, and/or corrections in my understanding would be appreciated.