1

コントロールをテンプレート化し、コントロールのコンテンツだけでなく、コントロール自体をテンプレートに含めたい。

たとえば、ボタンがあります。

<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はボタンのコンテンツのみを表示し、ボタン自体は表示しません。テンプレート化されたコントロール自体も含めるにはどうすればよいですか?

4

0 に答える 0