In WPF every control has two important but distinct feature i.e. its appearance (how it looks like on the screen) and its behavior (how it interact with users). In WPF all templates are inherited by one abstract class names FrameworkTemplate. Here is a class diagram of FrameworkTemplate with its members.
WPF already provide few template classes inherited by this class. These classes are ControlTemplate, DataTemplate and ItemsPanelTemplate. Here is a partial class hierarchy of template.
Control template is a property of Control class. It means it can be use with any class inherited by Control class. This relationship can be represented by the following diagram.
Similarly ItemsPanelTemplate is going to be used with ItemControl class. It is used to specify the visual appearance of multiple items in ItemControl such as ListBox, ComboBox, StatusBar etc. Here is a class diagram of ItemsPanelTemplate.
All other templates are type of Data template. There is one specific type of data template name HierarchicalDataTemplate. This data template is going to be used with HeaderedItemsControl.
