在WPF中如何去掉按钮边框?

23
我试图去除按钮边框,只显示文本,但即使我将BorderThickness设置为0且BorderBrush设置为透明,仍会显示文本周围的细线。 alt text 我的Save按钮的XAML代码:
<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"/>

有没有办法去掉按钮边框?


2
小技巧:<Button BorderThickness="0" Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}" ></Button>,来自类似的帖子 - Gábor Imre
4个回答

49

你需要重写 Button 的 ControlTemplate:

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

3
您的建议将删除按钮的所有高亮/按下样式。 - Nam G VU
2
是的。如果您想保留它,您需要获取控件模板的副本(例如使用Expression Blend),修改它(并保留您想要保留的部分),然后将其应用于您的按钮。 - bitbonk

12

我最近发现的对此最有帮助的方法是使您的按钮使用工具栏的样式。这将仅在鼠标悬停时显示按钮边框,而只使用图像或文本。

<Button Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}"
        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" />

1
哇塞,丹!这太聪明了! - Jesse Seger
1
需要注意的是,如果按钮位于工具栏内部,则此方法将无法正常工作。 - xandermonkey

2

您需要为按钮创建新的模板。

最简单的方法是在Expression Blend中打开您的项目,选择按钮,然后右键单击并选择“编辑模板>编辑副本...”。这将复制现有模板成为可修改的模板。如果您在资源字典中创建它,则会更容易。

然后选择模板,在UI右侧的资源选项卡上选择ButtonFocusVisual。选择属性选项卡并展开杂项部分。其中包括BorderStyle和BorderThickness字段。将样式设置为None。


我按照您的指南操作,但未能成功移除边框。我在这里发布了问题:https://dev59.com/fW455IYBdhLWcg3wFP9u。请支持我们。 - Nam G VU

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接