3

内部にpng画像を含むWPFボタンを作成しようとしていますが、背景が機能しません

<Setter Property="Width" Value="30"/>
<Setter Property="Height" Value="30"/>
<Setter Property="Background" Value="Purple"/>

<Setter Property="Template">

    <Setter.Value>
        <ControlTemplate TargetType="Button">

            <Grid>
                <Image Source="../Images/Buttons/logo_30px.png"/>
                <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
            </Grid>

            <ControlTemplate.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="Opacity" Value="1"/>
                </Trigger>
                <Trigger Property="IsPressed" Value="True">
                    <Setter Property="Opacity" Value="1"/>
                </Trigger>
            </ControlTemplate.Triggers>

        </ControlTemplate>
    </Setter.Value>
</Setter>

ボタンのサイズは30x30で、画像も30x30 pxで、透明な領域があります。「Background」プロパティを使用すると、機能しません。

背景色を機能させるにはどうすればよいですか?

4

2 に答える 2

4

ControlTemplateは、次のように、Backgroundプロパティを使用する必要があります。

<ControlTemplate TargetType="Button"> 
    <Grid> 
        <Rectangle Fill="{TemplateBinding Background}"/>
        <Image Source="../Images/Buttons/logo_30px.png"/> 
        <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/> 
    </Grid> 
    ...
</ControlTemplate>
于 2012-10-11T07:22:30.127 に答える
2

タグを使用しControlTemplateて、独自のボタンの外観を構築しています。Borderしたがって、またはを使用してカスタム背景を実装(追加)し、を使用してそのプロパティをボタンの背景にRectangleバインドする必要があります。Backrgound(Border) Fill(Rectangle)TemplateBinding

<Rectangle Fill="{TemplateBinding Background}"/> 

また

<Border Background="{TemplateBinding Background}"/>

于 2012-10-11T07:30:30.037 に答える