Control Templates
In addition to changing a control's look by manipulating
properties, you can replace it with something completely different by
setting a control's Template
property.
In Example 1-35, we've decided that our Add button is a yellow ellipse, as shown in Figure 1-19.
Example 1-35. Replacing a control's look completely with a control template
<Button DockPanel.Dock="Bottom" x:Name="addButton" Content="Add"> <Button.Template> <ControlTemplate TargetType="{x:Type Button}"> <Grid> <Ellipse Width="128" Height="32" Fill="Yellow" Stroke="Black" /> <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" /> </Grid> </ControlTemplate> </Button.Template> </Button>

Figure 1-19. A yellow ellipse button
The template of a control in
WPF is what defines the look, whereas the code defines the behavior. The
default template comes from the system-scope resources (as described in
Chapter 12), but if you don't like that one, you can
replace it with whatever you like, using a content presenter to drop in
the content provided by the developer using your control. However, the
behavior remains the same (e.g., if you click on the ellipse-shaped
button in Figure 1-19, a Click event is still fired). We explore in
detail the power of replacing the look of a control in Chapter 9.
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access