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

时间:2016-08-30 08:53:42

标签: c# wpf

我正在尝试用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>
    

但按钮是不可见的

enter image description here

为什么会这样?

2 个答案:

答案 0 :(得分:1)

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

<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>

答案 1 :(得分:0)

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

试试这个

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

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

希望有所帮助:)