The ControlTemplate specifies the appearance of a Control. If a Control does not have a ControlTemplate, the Control will not appear in your application. The control author defines the default control template and the application author can override the ControlTemplate to redefine the visual tree of the control. A ControlTemplate is intended to be a self-contained unit of implementation detail that is invisible to outside users and objects, including Style objects. The content of the ControlTemplate can be manipulated within the same ControlTemplate only.
The following example creates a ControlTemplate for a Button. If you add this to your application as a resource, all the buttons in the application will appear as ellipses but will still function as buttons.
[XAML]
<Style TargetType='Button'>
<!--Set to true to not get any properties from the themes.-->
<Setter Property='OverridesDefaultStyle' Value='True'/>
<Setter Property='Template'>
<Setter.Value>
<ControlTemplate TargetType='Button'>
<Grid>
<Ellipse Fill='{TemplateBinding Background}'/>
<ContentPresenter HorizontalAlignment='Center'
VerticalAlignment='Center'/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Share with