コントロールをテンプレート化し、コントロールのコンテンツだけでなく、コントロール自体をテンプレートに含めたい。
たとえば、ボタンがあります。
<Grid x:Name="LayoutRoot" Background="White">
<Button Name="hello" Content="123" Width="100" Height="100" >
</Button>
</Grid>
このボタンを囲む幅を広くしたいので、次のようになります。
<Grid x:Name="LayoutRoot" Background="White" Width="120" Height="120">
<Rectangle Fill="AliceBlue"/>
<Button Name="hello" Content="123" Width="100" Height="100" >
</Button>
</Grid>
しかし、ボタンだけでなく、他のコントロールについても、これをより一般的なものにしたいと思います。つまり、Image、TreeViewItemなどです。
そこで、テンプレートを作成しました。
<UserControl.Resources>
<Style TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid Width="120" Height="120">
<Rectangle Fill="AliceBlue"/>
<ContentPresenter Content="{TemplateBinding Property=ContentControl.Content}" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources>
<Grid x:Name="LayoutRoot" Background="White">
<Button Name="hello" Content="123" Width="100" Height="100" >
</Button>
</Grid>
これで、ContentPresenterはボタンのコンテンツのみを表示し、ボタン自体は表示しません。テンプレート化されたコントロール自体も含めるにはどうすればよいですか?