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 像素,并且它有透明区域,当我使用“背景”属性时,它根本不工作。

如何使背景颜色起作用?

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或实现(添加)您的自定义背景,RectangleBackrgound(Border) Fill(Rectangle)使用TemplateBinding.

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

或者

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

于 2012-10-11T07:30:30.037 回答