- 此问题在此处已有答案**:
How do you change Background for a Button MouseOver in WPF?(6个答案)
11小时前关门了。
截至11小时前,社区正在审查是否重新讨论这个问题。
我不明白为什么在鼠标悬停的时候不改变背景和前景,而是改变了边框的角半径。
ButtonStyle.xaml
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style TargetType="Button" x:Key="RoundedCorners">
<Style.Resources>
<Style TargetType="{x:Type Button}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="Red"/>
<Setter Property="Foreground" Value="Green"/>
</Trigger>
</Style.Triggers>
</Style>
<Style TargetType="Border">
<Setter Property="CornerRadius" Value="5"/>
</Style>
</Style.Resources>
</Style>
</ResourceDictionary>
LoginView.xaml
<Button Height="50"
Width="200"
Style="{StaticResource RoundedCorners}">
LOGIN
</Button>
1条答案
按热度按时间6tdlim6h1#
在WPF中,通过
Style={StaticResource StyleKey}
本地设置的显式Style
优先于通过TargetType
匹配的隐式样式,如下所述。因此,只有外部的
Style
被应用到您的Button
,因为它被给定了一个键并进行了扩展设置。要解决这个问题,你应该将内部的
Style
合并到键控的Style
中,如下所示:当你悬停在
Foreground
上时,Foreground
会正确地改变,Background
仍然不会改变,但这是一个完全不同的问题。