C# 应用基本自定义样式时按钮不可见-WPF

C# 应用基本自定义样式时按钮不可见-WPF,c#,wpf,C#,Wpf,我正在尝试用PNG(无边框、渐变等)可视化按钮 我所做的是: 资源 <Style x:Key="PlainImageButton" TargetType="{x:Type Button}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="Button"> <Con

我正在尝试用PNG(无边框、渐变等)可视化按钮

我所做的是:

  • 资源

    <Style x:Key="PlainImageButton" TargetType="{x:Type Button}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button">
                    <ContentPresenter HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
    
    
    
  • XAML

        <Button Width="16" Height="16" Style="{DynamicResource PlainImageButton}">
                    <Button.Background>
                        <ImageBrush ImageSource="Images/pencil.png"/>
                    </Button.Background>
            </Button>
    
    
    
但是按钮是看不见的


为什么会发生这种情况?

您正在按钮中提供图像作为背景。而在模板中,您没有使用background属性与ContentPresenter绑定

试试这个

 <Button Width="16"
                Height="16"
                Style="{DynamicResource PlainImageButton}">
            <Button.Content>
                <Image Source="pencil.png" />
            </Button.Content>
        </Button>

在这里,我将内容设置为图像,该图像将与模板中的ContentPresenter绑定


希望有帮助:)

您必须在模板中使用提供的背景,例如:

<Button.Template>
    <ControlTemplate TargetType="{x:Type ButtonBase}">
        <Border x:Name="border" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
            <ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" />
        </Border>
    </ControlTemplate>
</Button.Template>