如何在XAML模板中的MouseOver触发器上增加颜色值?

时间:2012-05-10 00:37:32

标签: wpf xaml

大家好,

我正在创建一个在我的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,使按钮颜色变浅,然后减小鼠标离开时。救救我?

谢谢你们。

1 个答案:

答案 0 :(得分:1)

我相信你所描述的是ColorAnimationexample,或者你可以看一下Forum Post。来自论坛帖子的一个有趣的说明。

  

触发器在满足条件时对一个或多个属性进行更改,然后在不再满足条件时重置属性值。

所以他的建议是:

<ControlTemplate.Triggers> 
    <Trigger Property="IsMouseOver" Value="True"> 
        <Setter Property="Background" Value="LightGray" /> 
    </Trigger> 
</ControlTemplate.Triggers> 

它将重置为FireBrick,如您在示例中所给出的那样