WPF,这个触发器为什么没有执行
<Window.Resources>
<Style TargetType="Button">
<Style.Triggers>
<Trigger Property="IsPressed" Value="true">
<Setter Property = "Foreground" Value="Red"/>
<Setter Property="Background" Value="Yellow" />
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
<Grid Height="100" Name="grid1" Width="200">
<Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="43,32,0,0" Name="button1" VerticalAlignment="Top" Width="75" />
</Grid>
当单击按钮的时候,为什么只有前景色变成了红色,而背景色却没有变成黄色?
------解决方案--------------------BUTTON里面的内部不会因为Background而改变
你只有通过改变Template才可以
------解决方案--------------------正如你所想的,你所看到的,像其他控件,比如说Border, StackPanel都可以直接设置其背景的。到了Button这里就不可以了。
首先这个Background属性是从Control继承过来的,所以你会看到Border, Button都有这个属性。
但是,由于Button是一个历史很悠久的控件,也是操作系统中最常见的控件。所以为了保持兼容性,及与操作系统保持一致性。WPF 在提供这个控件的时候就已经提供了一个Button默认的模板,这个模板并没有充分利用Background这个属性,即默认模板没有与这个属性绑定(template binding),而是设置成了与操作系统保持一致性的几种固定表现(mouseover, click等的表现)。所以如果你想利用Button的Background属性,那么你要为Button重新定义模板,在你自己的模板中绑定Background属性,如下面的一个例子:
<Button.Template>
<ControlTemplate TargetType="{x:Type Button}">
<Border Background="{TemplateBinding Background}">
<ContentPresenter/>
</Border>
</ControlTemplate>
以上是我的理解,欢迎大家讨论指正。
------解决方案--------------------