我正在处理按钮样式,悬停效果给我一些问题。我做了搜索,但没有找到我的答案(或者没有正确搜索,所以我决定在这里问一下)。我在WPF用户控件中指定以下样式,然后在按钮上设置此样式。
<Style x:Key="TileButton" TargetType="Button">
<Setter Property="BorderThickness" Value="1" />
<Setter Property="BorderBrush" Value="Black" />
<Setter Property="Height" Value="80" />
<Setter Property="Width" Value="80" />
<Setter Property="Margin" Value="10,10,0,0" />
<Setter Property="Background" Value="#FF91b220" />
<Setter Property="FontWeight" Value="Bold" />
<Setter Property="Foreground" Value="White" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#FF91b220" />
</Trigger>
</Style.Triggers>
</Style>
除非我将鼠标悬停在按钮上,而不是按照我的要求保持一致的背景颜色,否则一切似乎都有效,它会恢复为默认的WPF浅蓝色。我尝试添加其他属性更改,例如在鼠标悬停时增加高度,只是为了确认这些更改生效。它似乎只是想阻止我的背景。
TIA
答案 0 :(得分:3)
您必须完全覆盖按钮的继承Windows样式。尝试将followinf片段添加到您的样式中。
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border Background="{TemplateBinding Background}">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
还可以移动您的二传手(或者更确切地说是他们的内容)作为模板边框的边框。
答案 1 :(得分:1)
按钮的此行为在默认按钮样式中定义,“鼠标悬停”颜色定义为绑定。要在鼠标悬停时保留颜色,您可以覆盖按钮模板,如:
<Style TargetType="Button">
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Setter Property="FontWeight" Value="Bold" />
<Setter Property="Foreground" Value="White" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border BorderThickness="1"
Margin="10,10,0,0"
BorderBrush="Black"
Background="#FF91b220"
Height="80"
Width="80">
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>