You can do something like this:
<ControlTemplate TargetType="{x:Type Control}" x:Key="SharedControlTemplate">
<Grid>
<Rectangle Fill="{TemplateBinding BorderBrush}"/>
<TextBlock Text="Shared Control Template"/>
</Grid>
</ControlTemplate>
<Style TargetType="{x:Type Thumb}" x:Key="HorizontalSliderThumbStyle">
<Setter Property="Template" Value="{StaticResource SharedControlTemplate}"/>
</Style>
<Style TargetType="{x:Type Button}" x:Key="KeyboardButtonStyle">
<Setter Property="Template" Value="{StaticResource SharedControlTemplate}"/>
</Style>
Both Thumband Buttonobtained from the base class Control(not once, but is one of the ancestors). Therefore, if you define for it ControlTemplate, you can specify both controls to the same template. Then, in style, you will adapt your individual behavior if you need it.
Usage example:
<Thumb Style="{StaticResource HorizontalSliderThumbStyle}" BorderBrush="AliceBlue"/>
<Button Style="{StaticResource KeyboardButtonStyle}" BorderBrush="Aquamarine"/>

EDIT:
, , ContentPresenter ControlTemplate. Content ContentControl. Control ContentControl, Controls, ... , . :
<ControlTemplate TargetType="{x:Type Control}" x:Key="SharedControlTemplate">
<Grid>
<Rectangle Fill="{TemplateBinding BorderBrush}"/>
<TextBlock Text="Shared Control Template"/>
<ContentPresenter Content="{TemplateBinding ContentControl.Content}"/>
</Grid>
</ControlTemplate>
, ContentPresenter, a ContentControl. - , :
<Thumb Style="{StaticResource HorizontalSliderThumbStyle}" BorderBrush="AliceBlue"/>
<Button Style="{StaticResource KeyboardButtonStyle}" BorderBrush="Aquamarine">
<Rectangle Fill="Red" Width="100" Height="20"/>
</Button>
