这不起作用的原因是因为默认的 Button 模板使用 Button Chrome来绘制边框和背景,并根据 Windows 主题(例如 Windows XP 样式、Windows 7 样式)处理鼠标悬停和禁用等状态。
为了允许应用您的触发器,您将需要定义一个自定义 Button 模板,该模板使用标准可样式化的 WPF 元素,如 Border,而不是 ButtonChrome。这是一个简单的工作示例:
<Button Content="button">
<Button.Style>
<Style TargetType="Button">
<Setter Property="BorderThickness" Value="3" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Background="{TemplateBinding Property=Background}"
BorderBrush="{TemplateBinding Property=BorderBrush}"
BorderThickness="{TemplateBinding Property=BorderThickness}">
<ContentPresenter />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="Red" />
<Setter Property="BorderBrush" Value="Green" />
<Setter Property="Foreground" Value="Blue" />
</Trigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>