Les classes héritant de TriggerBase sont au nombre de 5.

Que faire de ces classes ??? Voici un petit exemple ...
[xml]
<Window x:Class="WpfApplication3.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Window.Resources>
        <Style TargetType="ListBoxItem">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Path=Sexe}" Value="1">
                    <Setter Property="Foreground" Value="Red" />
                </DataTrigger>
                <MultiDataTrigger>
                    <MultiDataTrigger.Conditions>
                        <Condition Binding="{Binding Path=Sexe}" Value="1"/>
                        <Condition Binding="{Binding Path=Age}" Value="25"/>
                    </MultiDataTrigger.Conditions>
                    <Setter Property="Background" Value="Pink" />
                </MultiDataTrigger>
            </Style.Triggers>
        </Style>
        <Style TargetType="Button">
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="Background" Value="Red"/>
                </Trigger>
                <MultiTrigger>
                    <MultiTrigger.Conditions>
                        <Condition Property="IsMouseOver" Value="True" />
                        <Condition Property="IsPressed" Value="True" />
                    </MultiTrigger.Conditions>
                    <Setter Property="Background" Value="Green"/>
                </MultiTrigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>
    <StackPanel>
        <ListBox Name="listbox" DisplayMemberPath="Nom"/>
        <Button Content="Mon bouton"/>
    </StackPanel>
</Window>
Et voici une petite explication !
Les data trigger (que ce soit simple ou multiple) servent a modifier des propriétés d'un contrôle en fonction du contenu d'objets utilisé dans le binding. Je m'explique ... Il est tout à fait possible de placer un fond rose pour les filles qui ont 25 ans et un fond rouge pour les autres filles.
Les triggers (sans data) servent a modifier des propriétés du contrôle lorsque certaines conditions sont remplies. Par exemple, je souhaite voir mon bouton en rouge lorsque je pointe ma souris sur le bouton. J'appliquerai un Trigger sur mon bouton dans le style.
Pour ce qui est de l'event trigger (qui ne se trouve pas dans l'exemple ci dessus), il sert à lancer par exemple une animation lorsque un evenement est lancé. Par exemple, pour zoomer sur le bouton en augmentant sa taille lorsque la souris se trouve sur le bouton, on appliquera un EventTrigger.
Une petite remarque qui évitera des questions et problèmes ;-) ... Il est impossible de spécifier en TargetName un contrôle non défini dans les styles en ressource. Je m'explique ... Il est impossible de dire que l'on applique tel ou tel trigger qui modifie un contrôle depuis un style d'un autre contrôle en passant par le name du contrôle dans l'ui... Par exemple, il est impossible de dire :
[xml]
<resources>
<mestriggers>
<!--Je modifie la couleur de fond du contrôle ayant en name
"block" lorsque la souris se trouve sur le bouton ayant en nom "but" -->
</mestrigges>
</resources>
<Button Name="but"/>
<TextBlock Name="block"/>
Il faut passer par des styles défini dans les ressources pour lier les deux ... et non pas en appelant directement le contrôle.