如何摆脱图像嵌入按钮周围的边框?

时间:2016-12-15 13:55:01

标签: c# wpf xaml

我正试图摆脱我按钮周围的白色边框。我正在向Button添加图片。它似乎不是按钮本身,而是图像的边界。

这是XAML,

   <Style x:Key="MyButton" TargetType="Button">
        <Setter Property="OverridesDefaultStyle" Value="True" />
        <Setter Property="Cursor" Value="Hand" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button">
                    <Border Name="border" BorderThickness="0" Background="{TemplateBinding Background}" CornerRadius="5" >
                        <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="Opacity" Value="0.5" />
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

Button自己,

   <Button Name="Button2" Content="stuff" Height="25" Grid.Column="1" Grid.Row="1"
          Style="{StaticResource MyButton}" Click="Button2_OnClick">
              <Button.Background>
                  <ImageBrush ImageSource="Images\ButtonEnterLight.png"></ImageBrush>
              </Button.Background>
   </Button>

这就是结果,

enter image description here

我需要做些什么才能让它消失?上周一直困扰着我。

编辑:这是Live Visual Tree的屏幕截图,扩展到第一个嵌入了Image的按钮。

enter image description here

1 个答案:

答案 0 :(得分:2)

好吧,FocusVisualStyle是一个经常被忽视的System.Windows.Style属性值,在很多情况下会添加一个资源来帮助可视化控件何时具有活动焦点。

在您正在使用的Style模板中可能并不总是很明显,因为默认值是一个空的静态样式,但在运行时通常也是有效的。因此,即使您已经为模板中的元素声明了触发器或视觉状态,通常最终会发生这种情况。在您未明确设置的元素上会出现幽灵边框或其他视觉效果。

要解决这个问题,你可以做几件事。

  • 可以覆盖属性globally
  • 可以使用setter在模板实例上覆盖它,例如<Setter Property="FocusVisualStyle" Value="{x:Null}"/>

    [该值也可以有效地为Transparent,无论哪种方式,您只是想声明您不希望BorderThickness有颜色。]

  • 你也可以通过BorderThickness="0"
  • 放弃边界来放弃它。

总体目标是,只处理FocusVisualStyle的属性并消除其结果或隐藏它,因此它不再是视觉效果,您可以继续您的一天。

希望这会有所帮助,欢呼。