创建一个内部带有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像素,并且它有透明区域,当我使用“背景”属性时,它只是起作用。
如何使背景颜色有效?
答案 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
代码构建您自己的按钮外观。因此,您需要使用Border
或Rectangle
实现(添加)自定义背景,并使用Backrgound(Border)
将其Fill(Rectangle)
TemplateBinding
属性绑定到Button的背景。
<Rectangle Fill="{TemplateBinding Background}"/>
或
<Border Background="{TemplateBinding Background}"/>