« Trigger » : différence entre les versions
De Banane Atomic
Aller à la navigationAller à la recherche
Ligne 16 : | Ligne 16 : | ||
= DataTrigger = | = DataTrigger = | ||
{{warn | The {{boxx|Value}} property can not be bound because it is not a dependency property.}} | |||
DataTrigger fonctionne avec les propriétés de l'objet référencé par le Binding. | DataTrigger fonctionne avec les propriétés de l'objet référencé par le Binding. | ||
<kode lang="xaml"> | <kode lang="xaml"> |
Version du 18 avril 2020 à 00:20
Définition
Déclencheur d'actions en fonctions d’événements (souris ou clavier) ou de modifications de valeurs (propriétés ou data binding).
Propriété Trigger
La propriété Trigger fonctionne avec les propriétés des composants graphiques.
<Window.Resources> <Style TargetType="{x:Type TextBox}"> <Style.Triggers> <!-- Déclenchement du Trigger sur la propriété IsMouseOver de la TextBox --> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Background" Value="Cyan" /> </Trigger> ... |
DataTrigger
The Value property can not be bound because it is not a dependency property. |
DataTrigger fonctionne avec les propriétés de l'objet référencé par le Binding.
<TextBlock Foreground="Black"> <TextBlock.Style> <Style TargetType="{x:Type TextBlock}"> <!-- Le trigger ne peut pas redéfinir les propriétés définies dans le control (ex : Foreground), pour faire cela, il faut plutôt définir les proprétés dans le Style --> <Setter Property="Background" Value="White"/> <Style.Triggers> <!-- Le trigger est déclenché lorsque Propriété passe à True --> <DataTrigger Binding="{Binding Path=Propriété}" Value="True"> <!-- Lorsque le trigger est déclenché, la propriété Background est mise à Red. Lorsque Propriété passe à False, Background reprend sa valeur initiale (White) --> <Setter Property="Background" Value="Red"/> </DataTrigger> ... |
MultiDataTrigger
Comme pour le DataTrigger mais avec plusieurs conditions de déclenchement.
<TextBox Text="TTT"> <TextBox.Style> <Style TargetType="{x:Type TextBox}"> <Setter Property="Background" Value="Green" /> <Style.Triggers> <MultiDataTrigger> <MultiDataTrigger.Conditions> <!-- Ce Binding fait référence à la TextBox elle-même. Equivalent à la Propriété Trigger --> <Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsMouseOver}" Value="True"/> <!-- Ce Binding fait référence à la propriété ChangeColor du DataContext --> <Condition Binding="{Binding Path=ChangeColor}" Value="True"/> </MultiDataTrigger.Conditions> <Setter Property="Background" Value="Orange" /> </MultiDataTrigger> ... |
EventTrigger
L'EventTrigger est utilisé pour déclencher une animation suite à un événement.
<UserControl> <UserControl.Triggers> <!-- Déclenchement lors du double-click sur le UserControl --> <EventTrigger RoutedEvent="UserControl.MouseDoubleClick"> <EventTrigger.Actions> <BeginStoryboard> <Storyboard/> </BeginStoryboard> </EventTrigger.Actions> </EventTrigger> |
Pour lier un événement au lancement d'une commande, il vaut mieux utiliser InvokeCommandAction ou EventToCommand.