Изображение png внутри кнопки WPF

Я пытаюсь создать кнопку WPF с изображением png внутри, но фон не работает

<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 px, и оно имеет прозрачные области. Когда я использую свойство "Background", оно просто работает.

Как сделать так, чтобы цвет фона работал?

2 ответа

Решение

Ваш ControlTemplate должен будет использовать свойство Background, как-то так:

<ControlTemplate TargetType="Button"> 
    <Grid> 
        <Rectangle Fill="{TemplateBinding Background}"/>
        <Image Source="../Images/Buttons/logo_30px.png"/> 
        <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/> 
    </Grid> 
    ...
</ControlTemplate>

С помощью ControlTemplate пометьте, вы строите свой собственный вид кнопки. поэтому вам нужно реализовать (добавить) свой собственный фон, используя Border или же Rectangle и связать его Backrgound(Border)Fill(Rectangle) Свойство для вашего фона кнопки, используя TemplateBinding,

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

или же

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

Другие вопросы по тегам