在WPF的透明按钮背景使用样式

Bil*_*low 8 c# wpf styles button transparent

我找到了关于将按钮的边框设置为透明的主题.这工作正常,但我想将此用于按钮背景而不是边框​​.

链接中的解决方案我已经放入<Window.Resources>...</Window.Resources>:

<Style TargetType="{x:Type Button}">
    <Setter Property="Background" Value="Green"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Button}">
                <Border Background="{TemplateBinding Background}">
                    <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="Background" Value="Red"/>
        </Trigger>
    </Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)

来源:如何在WPF中更改Button MouseOver的背景?

如何编辑这段代码,以便我可以使用它来将我的按钮的背景设置为透明而不是它的边框?

aDo*_*eSo 9

尝试使用此代码段获取透明按钮:

<Button Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}" BorderThickness="0">
    <-- PUT BUTTON CONTENT HERE e.g. a Image -->
</Button>
Run Code Online (Sandbox Code Playgroud)


Bil*_*low 6

找到我的问题的解决方案:

显然,您必须在ControlTemplate.Trigger下的ControlTemplate中添加触发器.Andd在你完成之后,带边框的东西是你必须在Border标签中设置TargetName,然后将引用( - > TargetName ="XXXXX")设置为你在border标签中命名的属性.

所以:

<Window.Resources>
<Style x:Key="MenuButton" TargetType="Button">
    <Setter Property="Background" Value="Transparent"/>
    <Setter Property="Height" Value="40" />
    <Setter Property="Width" Value="Auto" />
    <Setter Property="Foreground" Value="White" />
    <Setter Property="Margin" Value="45,0,0,0" />

    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Button}">
                <Grid>
                <Border Name="MenuBorder" SnapsToDevicePixels="True" BorderBrush="Black" Background="{TemplateBinding Background}" BorderThickness="0,0,0,2" >
                    <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
                </Border>
                </Grid>
                <ControlTemplate.Triggers>
                    <Trigger Property="Button.IsFocused" Value="True">
                        <Setter Property="Background" Value="Transparent"/>
                        <Setter TargetName="MenuBorder" Property="BorderBrush" Value="#FFED6A2B" />
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)


Ale*_*lex 5

改变这一行

<Setter Property="Background" Value="Red"/>
Run Code Online (Sandbox Code Playgroud)

<Setter Property="Background" Value="Transparent"/>
Run Code Online (Sandbox Code Playgroud)