下面是我在应用程序中用于按钮的样式。现在,当用户用鼠标左键单击按钮时,我正在尝试更改名称为Border
的{{1}}元素的背景颜色。
我该怎么做?
"Background"
答案 0 :(得分:17)
您只需要以下属性触发器:
<ControlTemplate.Triggers>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background" TargetName="Background" Value="Red"/>
</Trigger>
</ControlTemplate.Triggers>
答案 1 :(得分:4)
您需要一个EventTrigger
给一个或两个Border的GradientStops一个名字(不是你的Trigger中的名字):
<GradientStop Color="#f1f1f1" Offset="1" x:Name="Stop2" />
并将以下EventTrigger添加到ControlTemplate.Triggers:
<EventTrigger RoutedEvent="Button.Click">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation Storyboard.TargetName="Stop2" Storyboard.TargetProperty="Color" To="Red" Duration="0" />
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
如果你想修改两个渐变色块,请务必给它们一个名字,并分别对每个渐变色块执行ColorAnimation(我想你可以在同一个故事板中同时进行)
希望它有所帮助!
编辑:这将使Click事件的更改成为永久性(我使用VS 2010 Beta 2进行了测试,而Button.MouseLeftButtonDown不起作用,但Button.Click仅适用于鼠标左键按下而不适用鼠标右键)。如果您只希望在鼠标停止时进行更改...但是当按钮不再按下时返回正常值...那么您应该使用另一个答案中提到的IsPressed属性触发器。