从wpf按钮鼠标悬停中删除奇怪的行为

时间:2013-10-31 15:05:29

标签: wpf xaml button styles mouseover

我正在与一个虚拟问题斗争几个小时。

在wpf中,我想覆盖Button的行为,此时我想达到的基本行为(某种颜色)。

但我不能简单地说:在鼠标悬停时添加下划线样式! 我可以添加下划线,但我无法删除文本周围的方块!

This is before the mouseOver: ok

The underline is ok but why the light-blue square around the text!?!

我正在使用的风格是:

 <Style TargetType="Button">
    <Setter Property="Foreground" Value="{DynamicResource {x:Static vs_shell:EnvironmentColors.CommandBarMenuLinkTextBrushKey}}"></Setter>
    <Setter Property="Cursor" Value="Hand"></Setter>
    <Setter Property="Background" Value="Transparent"></Setter>
    <Setter Property="BorderThickness" Value="0"></Setter>
    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="Background" Value="Transparent"/>
            <Setter Property="ContentTemplate">
                <Setter.Value>
                    <DataTemplate>
                        <TextBlock TextDecorations="Underline" Text="{TemplateBinding Content}" Background="Transparent"/>
                    </DataTemplate>
                </Setter.Value>
            </Setter>
        </Trigger>
    </Style.Triggers>
</Style>

有任何想法/建议吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

也许这会对你有所帮助:

Disable Control's Selection Background Effect in WPF

它涉及ListViewItems,但您可以在按钮或任何其他WPF控件上应用此机制。

祝你好运

答案 1 :(得分:0)

将此setter添加到样式:

<Setter Property="Template">
    <Setter.Value>
        <ControlTemplate TargetType="{x:Type Button}">
            <Border Background="{TemplateBinding Background}"
                    BorderBrush="{TemplateBinding BorderBrush}"
                    BorderThickness="{TemplateBinding BorderThickness}">
                <ContentPresenter Margin="{TemplateBinding Padding}"
                                    HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                    VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
            </Border>
        </ControlTemplate>
    </Setter.Value>
</Setter>