我有一个简单的问题。使用ispressed触发器,我希望能够将按钮的背景色设置为默认灰色以外的其他颜色。以下是未按下按钮时的外观
下面是单击时的外观
这是按钮的触发器。我知道触发器是正确的,因为当它被点击时,按钮边缘的发光效果。我也知道画笔是正确的,因为我试着把它作为背景画笔来看看它是什么样子的。
<style.triggers>
<trigger property=“ismouseover”value=“true”>
<setter property=“background”value=“dynamicResource buttonHoverBrush”/>
<setter property=“bitmapeffect”value=“dynamicResource buttonHoverGlow”/>gt;
</trigger>
&!--这是正在工作的触发器,但背景色不会更改-->
<trigger property=“ispressed”value=“true”>
<setter property=“bitmapeffect”value=“dynamicResource buttonHoverGlow”/>gt;
<setter property=“background”value=“dynamicResource buttonPressedBrush”“/>
</trigger>
</style.triggers>
< /代码>
这里是整个样式,如您所见,它是应用于应用程序中所有按钮的默认样式。
<style targetType=“button”>
<setter property=“background”value=“dynamicResource buttonBrush”/>gt;
<setter property=“foreground”value=“black”/>
<style.triggers>
<trigger property=“ismouseover”value=“true”>
<setter property=“background”value=“dynamicResource buttonHoverBrush”/>
<setter property=“bitmapeffect”value=“dynamicResource buttonHoverGlow”/>gt;
</trigger>
<trigger property=“ispressed”value=“true”>
<setter property=“bitmapeffect”value=“dynamicResource buttonHoverGlow”/>gt;
<setter property=“background”value=“dynamicResource buttonPressedBrush”“/>
</trigger>
</style.triggers>
&风格/风格;
< /代码>
这里是最终解决方案(感谢所有帮助过的人)
为常规按钮创建控件模板并执行一些数据绑定:
<controlTemplate targetType=“Button”x:key=“ButtonControlTemplate”>
<border background=“模板绑定背景”
borderthickness=“模板绑定borderthickness”
borderBrush=“模板绑定borderBrush”
cornerradius=“3”>
格栅& GT;
<ContentPresenter ContentSource=“模板绑定内容”
contenttemplate=“模板绑定contenttemplate”
VerticalAlignment=“模板绑定VerticalContentAlignment”
HorizontalSignment=“模板绑定HorizontalContentAlignment”/>
和/格栅& GT;
&边界/gt;
</controltemplate>
将控件模板添加到样式:
<style targetType=“button”>
<setter property=“background”value=“dynamicResource buttonBrush”/>gt;
<setter property=“foreground”value=“black”/>
<setter property=“template”value=“dynamicResource buttonControlTemplate”“/>
<setter property=“borderthickness”value=“1”/>
<style.triggers>
<trigger property=“ismouseover”value=“true”>
<setter property=“background”value=“dynamicResource buttonHoverBrush”/>
<setter property=“bitmapeffect”value=“dynamicResource buttonHoverGlow”/>gt;
</trigger>
<trigger property=“ispressed”value=“true”>
<setter property=“bitmapeffect”value=“dynamicResource buttonHoverGlow”/>gt;
<setter property=“background”value=“dynamicResource buttonPressedBrush”“/>
</trigger>
</style.triggers>
&风格/风格;
注意:BorderThickness默认为1,否则它不会显示将按钮的r改为默认的灰色。这是不按按钮时的样子

这是点击时的样子

这是按钮的触发器。我知道触发器是正确的,因为当它被点击时,按钮边缘的发光效果。我也知道画笔是正确的,因为我试着把它作为背景画笔来看看它是什么样子的。
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="{DynamicResource ButtonHoverBrush}"/>
<Setter Property="BitmapEffect" Value="{DynamicResource ButtonHoverGlow}"/>
</Trigger>
<!-- This is the trigger which is working but the background color wont change -->
<Trigger Property="IsPressed" Value="True">
<Setter Property="BitmapEffect" Value="{DynamicResource ButtonHoverGlow}"/>
<Setter Property="Background" Value="{DynamicResource ButtonPressedBrush}" />
</Trigger>
</Style.Triggers>
这里是整个样式,如您所见,它是应用于应用程序中所有按钮的默认样式。
<Style TargetType="Button">
<Setter Property="Background" Value="{DynamicResource ButtonBrush}" />
<Setter Property="Foreground" Value="Black" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="{DynamicResource ButtonHoverBrush}"/>
<Setter Property="BitmapEffect" Value="{DynamicResource ButtonHoverGlow}"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="BitmapEffect" Value="{DynamicResource ButtonHoverGlow}"/>
<Setter Property="Background" Value="{DynamicResource ButtonPressedBrush}" />
</Trigger>
</Style.Triggers>
</Style>
这是最终的解决方案(感谢所有帮助过的人)
为常规按钮创建控件模板,并执行一些数据绑定:
<ControlTemplate TargetType ="Button" x:Key="ButtonControlTemplate">
<Border Background="{TemplateBinding Background}"
BorderThickness="{TemplateBinding BorderThickness}"
BorderBrush="{TemplateBinding BorderBrush}"
CornerRadius="3">
<Grid>
<ContentPresenter ContentSource="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"/>
</Grid>
</Border>
</ControlTemplate>
将控件模板添加到样式:
<Style TargetType="Button">
<Setter Property="Background" Value="{DynamicResource ButtonBrush}" />
<Setter Property="Foreground" Value="Black" />
<Setter Property="Template" Value="{DynamicResource ButtonControlTemplate}" />
<Setter Property="BorderThickness" Value="1" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="{DynamicResource ButtonHoverBrush}"/>
<Setter Property="BitmapEffect" Value="{DynamicResource ButtonHoverGlow}"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="BitmapEffect" Value="{DynamicResource ButtonHoverGlow}"/>
<Setter Property="Background" Value="{DynamicResource ButtonPressedBrush}" />
</Trigger>
</Style.Triggers>
</Style>
注意:BorderThickness默认为1,否则它不会显示