Partager via


Utilisation de déclencheurs pour la définition du comportement d'un contrôle WPF

Cette page s’applique uniquement aux projets WPF

Pendant la durée de vie d'une application, les objets de l'interface utilisateur subissent des modifications de leur état. L’état s’exprime souvent en des termes orientés utilisateur ; par exemple, l’état pointé avec la souris d’un bouton ou l’état enfoncé d’une option de menu. Ces deux exemples d’états sont implémentés sur des objets par l’intermédiaire de la propriété UIElement.IsMouseOver et de la propriété MenuItem.IsPressed , respectivement.

Mais les valeurs de ces propriétés, et par conséquent les états qu’elles représentent, ne sont pas en elles-mêmes visibles par l’utilisateur. IsMouseOver et IsPressed ne sont pas des propriétés visuelles. Pour pouvoir être visible, un changement dans une propriété non visuelle doit déclencher un changement dans une propriété visuelle (par exemple Background ou Opacity ). Par exemple, un bouton dans l’état pointé apparaît incurvé alors qu’il était plat auparavant, ou la couleur d’arrière plan d’une option de menu qui change lorsqu’elle est enfoncée.

En plus de changer d’état, les objets déclenchent également des événements. Par exemple, un bouton déclenche les événements MouseEnter et MouseLeave lorsque le pointeur franchit ses limites. Un événement n’a pas non plus d’apparence en lui-même, il doit donc déclencher un changement dans une propriété visuelle pour être remarqué par l’utilisateur.

Vous pouvez créer des déclencheurs (et chronologies d’animation) dans la racine de votre document ou dans un style appliqué à un contrôle. Par exemple, vous pouvez modifier le style d'un bouton afin d'apporter des modifications subtiles à l'apparence du bouton lorsque les états enfoncé et pointé du bouton changent. Le comportement des boutons auxquels le style est appliqué sera identique. Pour obtenir un exemple, voir Essayez ! Ajouter de l’animation à un bouton.

Il existe deux types de déclencheurs :

  • Déclencheur de propriété    Mécanisme par lequel un changement apporté à une propriété déclenche un changement instantané ou animé dans une autre propriété.

  • Déclencheur d’événements    Mécanisme par lequel un événement déclenche un changement animé dans une propriété.

L’image suivante montre l’interface utilisateur des déclencheurs, avec deux déclencheurs de propriété ( IsMouseOver et IsPressed ), ainsi qu’un déclencheur d’événements ( target-element.Loaded ). Le déclencheur de propriété IsMouseOver est sélectionné, indiquant la propriété modifiée ( Border.Background ) et la chronologie déclenchée ( OnLoaded1 ).

Cc294856.796fe3b0-6e25-43eb-aed6-2ac834fe40e4(fr-fr,Expression.40).png

Pour obtenir des exemples d’utilisation de déclencheurs, voir Ajouter ou supprimer un déclencheur à partir d’un contrôle WPF et Créer une animation simple.

Déclencheurs de propriété

Un déclencheur de propriété définit une condition de déclencheur, accompagnée des actions qui doivent suivre une fois la condition satisfaite. Exemple de condition : « la propriété IsMouseOver de bouton1 est vraie ». Exemple d’actions : « définir la propriété Foreground de bouton1 sur le rouge et commencer l’animation nommée Dilatation qui agrandit le bouton ».

La définition de Foreground sur le rouge est un exemple d’action nommée méthode setter de propriété . La méthode setter est en vigueur uniquement tant que la condition est satisfaite ; la propriété revient à sa valeur précédente lorsqu’elle n’est plus satisfaite. Le lancement de l’animation nommée Dilatation représente un exemple d’ action d’entrée  ; l’action a lieu lorsque la condition est satisfaite. Une action de sortie a lieu lorsque la condition n’est plus satisfaite. Seules les animations peuvent être contrôlées à partir d’actions d’entrée ou de sortie. La figure suivante illustre le cycle de vie de cet exemple de déclencheur de propriété.

Cc294856.e82c8455-215e-49da-954f-f1bb73d84af2(fr-fr,Expression.40).png

Notez que la méthode setter suffit pour contrôler la propriété Foreground tout au long du cycle de vie. À la phase 5, la propriété Foreground est automatiquement redéfinie sur le noir. Toutefois, les animations de propriété réalisées par l’action d’entrée ne sont pas annulées. À la phase 5, le bouton est toujours dans une taille agrandie. La solution consiste à concevoir une animation Contraction qui réduit la taille du bouton, puis à commencer cette nouvelle animation dans une action de sortie.

Un déclencheur de propriété peut être défini dans un style ou un modèle ; toutefois, il est généralement recommandé de placer les déclencheurs dans un modèle lorsque cela s’avère possible.

Déclencheurs d’événements

Un déclencheur d’événements définit une condition de déclencheur, accompagnée des actions qui doivent suivre une fois la condition satisfaite. Exemple de condition : « l’événement MouseEnter est déclenché sur bouton1 ». Exemple d’actions : « commencer l’animation nommée Dilatation qui agrandit le bouton ».

L’exemple d’action est le même que l’action d’entrée utilisée ci-dessus dans l’exemple du déclencheur de propriété. Un déclencheur d’événements n’a pas le même cycle de vie qu’un déclencheur de propriété. Il exécute plutôt les actions en réponse à un événement. Un déclencheur d’événements ne contient pas d’actions d’entrée ou de sortie, mais seulement des actions.

Pour qu’un bouton s’agrandisse lorsque le pointeur entre dans ses limites et revienne à sa taille usuelle lorsque le pointeur les quitte, il convient de définir une paire de déclencheurs d’événements contenant des animations complémentaires de mise à l’échelle. Un déclencheur d’événements peut être défini dans un style, un modèle ou LayoutRoot .

Déclencheur de propriété ou déclencheur d’événements ?

Souvent, à une propriété correspond un ensemble d’événements, et vous pouvez décider de concevoir un déclencheur de propriété ou deux déclencheurs d’événements. Par exemple, vous pouvez obtenir le même effet avec un déclencheur de propriété IsMouseOver et avec un couple de déclencheurs d’événements MouseEnter et MouseLeave . Utilisez les déclencheurs de propriété quand vous le pouvez et les déclencheurs d’événements lorsque vous le devez, par exemple lorsque vous n’êtes pas dans un style ou un modèle. Lorsque vous devez effectivement utiliser des déclencheurs d’événements, pour compenser l’absence de méthode setter, vous pouvez créer un couple d’animations avec des images clés à l’instant zéro.

Déclencheur ou méthode de gestionnaire d’événements ?

Vous pouvez utiliser les gestionnaires d’événements pour faire tout ce qu’un déclencheur peut faire, mais vous pouvez y ajouter une autre logique de programmation, telle que la définition d’une propriété sur un autre élément, le chargement d’un nouveau document, la création d’un élément, etc. En effet, les méthodes de gestionnaire d’événements sont définies dans le fichier code-behind de votre document, en langage C# ou Microsoft Visual Basic .NET. Pour plus d’informations, voir Écriture de code de gestion des événements.

Pour obtenir la liste des événements auxquels vous pouvez vous connecter, à l’aide de déclencheurs ou de méthodes de gestionnaire d’événements, voir Référence des contrôles, des propriétés et des événements.

Voir aussi

Tâches

Contrôler le moment auquel la table de montage séquentiel s’exécute

Copyright © 2011 Microsoft Corporation. Tous droits réservés.