我正在尝试创建一个包含图像且没有边框的按钮 - 就像Firefox工具栏按钮,然后将鼠标悬停在它们上方并查看完整按钮。
我尝试将BorderBrush
设置为Transparent
,将BorderThickness
设置为0
,并尝试BorderBrush="{x:Null}"
,但您仍然可以看到按钮。
答案 0 :(得分:245)
试试这个
<Button BorderThickness="0"
Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}" >...
答案 1 :(得分:46)
您可能需要更改按钮模板,这将为您提供一个没有任何框架的按钮,但也没有任何按下或禁用效果:
<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}"/>
答案 2 :(得分:23)
答案 3 :(得分:20)
答案 4 :(得分:3)
您可以使用Hyperlink而不是Button,如下所示:
<TextBlock>
<Hyperlink TextDecorations="{x:Null}">
<Image Width="16"
Height="16"
Margin="3"
Source="/YourProjectName;component/Images/close-small.png" />
</Hyperlink>
</TextBlock>
答案 5 :(得分:2)
您可能已经知道将Button放在ToolBar中会给您带来这种行为,但是如果您想要的东西可以在所有当前主题中使用任何类型的可预测性,那么您需要创建一个新的ControlTemplate。
当Button具有焦点时,Prashant的解决方案不适用于不在工具栏中的Button。它也不能100%使用XP中的默认主题 - 当容器背景为白色时,您仍然可以看到模糊的灰色边框。
答案 6 :(得分:1)
以编程方式,您可以这样做:
btn.BorderBrush = new SolidColorBrush(Colors.Transparent);
答案 7 :(得分:-1)
为什么不将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>