我们不仅可以在代码中通过设置属性值来更改控件的外观,还可以在程序运行的过程中动态的改变控件的外观。例如,用户在按钮上移动鼠标,按钮就会改变其外观。通常,这必须在C#代码中实现。但是,使用WPF,我们可以在XAML中实现这个功能,而这功能的实现只会对UI产生影响。XAML有好几个类型的触发器:
1.属性触发器:在属性值改变时激活。
2.多触发器:基于多个属性值。
3.数据触发器:在绑定的数据改变时激活。
4.事件触发器:在事件发生时激活,即触发路由事件时会被调用。
WPF的样式类(Style)有一个Tirgger集合,这是专门存储触发器的集合,通过它可以指定属性触发器。如下代码,将一个触发器赋予IsMouseOver属性,将另一个触发器赋予IsPressed属性。它的效果是如果把鼠标移到按钮上(即IsMouseOver属性的值为御前true),就会激活触发器,将Foreground属性设置为Red,将FontSize属性设置为22;如果按下按钮,IsPressed属性就是true,激活第二个触发器,并将控件文本的前景色设置为Yellow。
<Window x:Class="触发器Triggers.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<Style TargetType="Button">
<Setter Property="Background" Value="LightBlue"/>
<Setter Property="FontSize" Value="17"/>
<Style.Triggers>
<Trigger Property="IsMouseO