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[
^]