大家好,
我正在创建一个在我的WPF应用程序中使用的按钮模板。格式基本上是彩色图块(大部分都是Think Windows Phone样式。)。
如果我想在MouseOver的情况下更改按钮的颜色,我只会制作一些这样的代码(假设原始按钮颜色为灰色):
<Window.Resources>
<Style x:Key="ColorTileButton" TargetType="Button>
<!-- Insert various property editing here. -->
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="LightGray" />
</Trigger>
<Trigger Property="IsMouseOver" Value="False>
<Setter Property="Background" Value="Gray" />
</Trigger>
</ControlTemplate.Triggers>
</Style>
</Window.Resources>
但很明显,如果原来的按钮颜色是Firebrick,那么这将不起作用,因为我最终会得到一堆标准的灰色按钮。所以我想知道是否有办法重写这个按钮模板,这样它只会将R,G和B的值增加大约10,使按钮颜色变浅,然后减小鼠标离开时。救救我?
谢谢你们。
答案 0 :(得分:1)
我相信你所描述的是ColorAnimation和example,或者你可以看一下Forum Post。来自论坛帖子的一个有趣的说明。
触发器在满足条件时对一个或多个属性进行更改,然后在不再满足条件时重置属性值。
所以他的建议是:
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="LightGray" />
</Trigger>
</ControlTemplate.Triggers>
它将重置为FireBrick,如您在示例中所给出的那样