在WPF按钮内的png图像

时间:2012-10-11 02:07:07

标签: wpf xaml button resourcedictionary

创建一个内部带有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像素,并且它有透明区域,当我使用“背景”属性时,它只是起作用。

如何使背景颜色有效?

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:2)

使用ControlTemplate代码构建您自己的按钮外观。因此,您需要使用BorderRectangle实现(添加)自定义背景,并使用Backrgound(Border)将其Fill(Rectangle) TemplateBinding属性绑定到Button的背景。

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

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