你如何完全删除wpf中的button边框?

我试图创build一个button,其中有一个图像,没有边框 – 就像Firefox的工具栏button,然后将鼠标hover在上面,看到完整的button。

我已经尝试将BorderBrush设置为Transparent ,将BorderThickness0 ,并尝试了BorderBrush="{x:Null}" ,但仍可以看到button的轮廓。

尝试这个

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

你可能不得不改变button模板,这会给你一个没有框架的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:

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

你必须做的是这样的:

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

希望这是你正在寻找的。

编辑:对不起,忘了提及,如果你想看到button的边界,当你把鼠标hover在图像上,你所要做的就是跳过Padding =“ – 4”

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

我在这里引用解决scheme:您需要重写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> 

您可以使用超链接而不是button,如下所示:

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

您可能已经知道,将Button放在ToolBar中会给您这种行为,但是如果您想要某种可以在所有当前主题中工作的东西,那么您需要创build一个新的ControlTemplate。

当button具有焦点时,Prashant的解决scheme不能用于不在工具栏中的button。 它也不能在XP中使用默认主题100% – 当容器背景为白色时,仍然可以看到淡灰色边框。

为什么不用相同的brush设置Background & BorderBrush

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