Implement both Datatemplates and controltemplates for a control doesn't make sense.
You use ControlTemplate to style for a type derived from Control
] by setting the Template property
] to that ControlTemplate.
You use DataTemplate to style items in a ListBox, ComboBox, ect.
Both a ControlTemplate and DataTemplate allow you to use Triggers.
I suggest you read this article; WPF Tutorial - Styles, Triggers & Animation