如何完全删除 wpf 中的按钮边框?

我正在尝试创建一个按钮,其中有一个图像,没有边框-就像火狐工具栏按钮之前,你鼠标悬停在他们看到完整的按钮。

我试过将 BorderBrush设置为 TransparentBorderThickness设置为 0,也试过 BorderBrush="{x:Null}",但是你仍然可以看到按钮的轮廓。

145594 次浏览

您可能已经知道将您的 Button 放在 ToolBar 中会产生这种行为,但是如果您希望某个按钮能够在任何可预测性的情况下跨所有当前主题工作,则需要创建一个新的 ControlTemplate。

当 Button 有焦点时,Prashant 的解决方案不适用于不在工具栏中的 Button。对于 XP 中的默认主题,它也不能100% 工作——当容器背景为白色时,仍然可以看到模糊的灰色边框。

试试这个

<Button BorderThickness="0"
Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}" >...

你要做的是这样的:

<Button Name="MyFlatImageButton"
Background="Transparent"
BorderBrush="Transparent"
BorderThickness="0"
Padding="-4">
<Image Source="MyImage.png"/>
</Button>

希望这就是你要找的。

编辑: 对不起,忘了提到,如果你想看到按钮边界时,你要做的就是跳过 填充 = “-4”

你可以使用超链接代替按钮,像这样:

        <TextBlock>
<Hyperlink TextDecorations="{x:Null}">
<Image Width="16"
Height="16"
Margin="3"
Source="/YourProjectName;component/Images/close-small.png" />
</Hyperlink>
</TextBlock>

我不知道为什么其他人没有指出这个问题与 这个答案是可以接受的是重复的。

我在这里引用解决方案: 你需要覆盖 ButtonControlTemplate:

<Button Content="save" Name="btnSaveEditedText"
Background="Transparent"
Foreground="White"
FontFamily="Tw Cen MT Condensed"
FontSize="30"
Margin="-280,0,0,10"
Width="60"
BorderBrush="Transparent"
BorderThickness="0">
<Button.Template>
<ControlTemplate TargetType="Button">
<ContentPresenter Content="{TemplateBinding Content}"/>
</ControlTemplate>
</Button.Template>
</Button>

你可能需要更改按钮模板,这将给你一个没有框架的按钮,但也没有任何按下或禁用的效果:

    <Style x:Key="TransparentStyle" TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Background="Transparent">
<ContentPresenter/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>

还有按钮:

<Button Style="{StaticResource TransparentStyle}"/>

你为什么不把两个 Background & BorderBrush都设成相同的 brush

 <Style TargetType="{x:Type Button}" >
<Setter Property="Background" Value="{StaticResource marginBackGround}"></Setter>
<Setter Property="BorderBrush" Value="{StaticResource marginBackGround}"></Setter>
</Style>


<LinearGradientBrush  x:Key="marginBackGround" EndPoint=".5,1" StartPoint="0.5,0">
<GradientStop Color="#EE82EE" Offset="0"/>
<GradientStop Color="#7B30B6" Offset="0.5"/>
<GradientStop Color="#510088" Offset="0.5"/>
<GradientStop Color="#76209B" Offset="0.9"/>
<GradientStop Color="#C750B9" Offset="1"/>
</LinearGradientBrush>

通过编程,您可以这样做:

btn.BorderBrush = new SolidColorBrush(Colors.Transparent);