我有下面的XAML代码,它用一个按钮创建一个窗口。当我单击该按钮时,前景颜色会更改为红色,但背景色不会改变。为什么其中一种改变,而不是另一种?
<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfExperiments"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid Margin="0,0,0,2">
<Grid.Resources>
<Style x:Key="ButtonStyle" TargetType="Button">
<Style.Triggers>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Foreground" Value="Red"/>
<Setter Property="Background" Value="Red"/>
</Trigger>
</Style.Triggers>
</Style>
</Grid.Resources>
<Button Style="{StaticResource ButtonStyle}"
Content="Button"
HorizontalAlignment="Left"
Margin="135,97,0,0"
VerticalAlignment="Top"
Width="75"
/>
</Grid>
</Window>当然,这是我第一次在谷歌上搜索。我发现的大多数修复方法是使用模板而不是样式,如果这是解决方案的话,我当然愿意这么做。但我在one SO answer中注意到,按钮具有覆盖样式值的默认模板。如果是的话,为什么我的XAML会影响前景?
发布于 2017-03-27 18:05:33
前台不会受到影响,因为按钮的默认模板在按下按钮时不会更新前台。它只更新背景。
默认模板的触发器是在样式触发器之后执行的,这就是为什么您的背景不受样式影响的原因。
更多的解释在这里
http://harishasanblog.blogspot.com/2011/02/ismouseover-trigger-not-working-in-wpf.html
发布于 2017-03-27 16:33:45
在Button的模板(ControlTemplate)中,有可能一些触发器会将背景更改为不同的颜色。从“力量”的角度来看,它比风格的触发更强,这就是它发挥作用的原因。试着用你发布的"ButtonStyle“样式编辑按钮的模板,然后把你的触发器放在那里。
https://stackoverflow.com/questions/43051236
复制相似问题