0

大家好,

我正在创建一个按钮模板以在我的 WPF 应用程序中使用。格式基本上是彩色图​​块(大多数情况下认为是 Windows Phone 风格。)。

如果我想在鼠标悬停的情况下更改按钮的颜色,我只需编写如下代码(假设原始按钮颜色为灰色):

<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 以使按钮颜色变浅,然后在鼠标离开时减少。帮帮我?

多谢你们。

4

1 回答 1

1

我相信你所描述的是ColorAnimation的一个例子,或者你可以看看这个论坛帖子。论坛帖子中的一个有趣的注释。

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

所以他的建议是:

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

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

于 2012-05-10T01:03:44.247 回答