Welcome

首页 / 软件开发 / .NET编程技术 / 《Programming WPF》翻译 第5章 6.触发器

《Programming WPF》翻译 第5章 6.触发器2011-09-11 博客园 包建强目前为止,我们已经看到样式,作为一个Setter元素的集合。当应用一个样 式时,在Setter元素中描述的设置不会无条件地应用(除非复写每一个设置的实 例)。另一方面,触发器是一种在条件中包装了一个或更多Setter元素的方式, 如果条件为真,相应地Setter元素会被执行,而条件为false的时候,属性值返 回预先触发的值。

WPF伴随着3种你可以在一个触发器条件中检查的事情一起发生,依赖属 性,.NET属性,.NET事件。头两个直接改变基于条件的值,如我所描述的;而最 后一个,一个事件触发器,被激活于一个事件发生并开始一个引起属性变化的动 画。

5.6.1属性触发器

触发器最简单的形式是属性触发器,它将监视一个依赖属性得到一个确定的 值。例如,如果我们想要使一个按钮当用户移动鼠标到这个按钮上的时候变为黄 色,我们可以这么做通过注释IsMouseOver属性是否有一个true值,正如示例5- 24所示。

示例5-24

<Style TargetType="{x:Type Button}">

<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True" >
<Setter Property="Background" Value="Yellow" />
</Trigger>
</Style.Triggers>
</Style>

一些触发器在Style.Triggers元素下被分组。在这种情形中,我们添加了一 个Trigger元素到button的样式中。当isMouseOver属性为true时,这个按钮的 Background值会被设为黄色,正如图5-8所示。

在图5-8中,你会注意到,只有鼠标当前所在位置的按钮会被设置黄色背景, 即使其他的按钮曾经在鼠标下也没有变色。当触发器不再为真时,没有必要着急 于使这个属性回到原先,例如,监视IsMouseOver为false。WPF依赖属性系统监 视到属性触发器变为无效的时,就会回复到原先设置的值。

图5-8