Découvrir Windows Presentation Foundation

Créer un DataTrigger

Testez gratuitement nos 1309 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Apprenez à créer un DataTrigger pour modifier l'affichage d'un contrôle lorsque la valeur d'un autre contrôle est changée.
05:13

Transcription

Les propriétés des contrôles WPF sont ce qu'on appelle des propriétés de dépendance ou DependencyProperty. En fait, leur traitement interne n'est pas exactement le même que des propriétés habituelles de classes .NET parce que les propriétés sont lues directement, à partir de membre privé dans des classes .NET, vous mettez un bandeau privé, vous avez un getter, un setter, et puis vous lisez les valeurs des propriétés. Par contre les propriétés de dépendance en WPF sont lues dynamiquement, à travers un dictionnaire, elles ne sont pas stockées, finalement, dans des champs individuels, mais elles sont stockées, regroupées dans un dictionnaire de propriétés, ce qui, en interne, diminue les besoins mémoire, et permet la notification des changements. On verra ça quand on va regarder le Binding, et puis le INotifyChanges pour la notification des modifications de propriété. C'est ce qui va permettre le Binding sur des propriétés dans notre interface WPF. Tout ça pour dire qu'il y a un deuxième type de Trigger, de style qui s'appelle un DataTrigger. Le DataTrigger va permettre de poser un déclencheur sur des propriétés qui ne sont pas des propriétés de dépendance pour pouvoir accéder directement aux propriétés, et incidemment ça va nous permettre d'accéder à d'autres propriétés, d'autres contrôles dans notre feuille, par exemple. Je vais vous montrer ce que je veux dire par là. Ici j'ai une deuxième envie, pour l'instant tout marche bien, mais normalement, là, je dois mettre le nom de mon serveur, et puis ensuite, je dis que je dois me connecter. Mais, par contre, ce que j'aimerais faire, c'est que si il n'y a pas le nom de serveur, j'aimerais désactiver le bouton, voilà, comme ça, bon ! En pratique ça ne va pas être une bonne solution que je vais implémenter, mais au moins ça vous fera une petite démo. Pourquoi pas une autre solution ? Parce que ça va pas résoudre tous les cas. Et ce n'est peut-être pas un DataTrigger qui est la meilleure solution pour ça, mais au moins ça vous fait une petite démo assez proche de la réalité. Donc j'ai un Trigger, déjà, pour le IsMouseOver et maintenant je vais créer un DataTrigger, et mon DataTrigger va être lié, je vais faire un Binding, c'est la première fois qu'on voit cette syntaxe de Binding, on va y revenir ensuite. Je vais utiliser pour mon Binding, toujours, une extension de Markup pour dire de me faire un Binding sur quelque chose d'autre : ça peut être sur des propriétés de mon DataContext. Ça peut être, aussi, sur un autre élément. Mon élément, ça va être... il faut que je le retrouve, maintenant, je vais faire comme ça... Pour l'instant, je ne peux pas le voir, parce que le Balisage n'est pas encore valide. On va faire autrement, je vais regarder ici, quel est... Voilà Authentication, c'est juste au-dessus, ça, c'est ComboBox et ça s'appelle SqlServerName, c'est le nom de la ComboBox dans laquelle je vais voir la liste de mes serveurs, et puis je vais choisir un serveur. Donc je reprends mon ElementName à SqlServerName, je rajoute un autre paramètre qui est le chemin de cet élément, et ça va être la propriété que je veux surveiller, c'est la propriété Text de mon ComboBox, donc là, j'ai fait mon Binding. Je vais fermer mon DataTrigger comme ça, ça me permettra d'avoir une syntaxe XAML reconnue, et puis je vais dire : OK, j'ai le Binding, maintenant je vais surveiller une valeur de cette propriété sur cet élément. Je vais dire que je veux que la valeur soit chaîne vide, comme ça, lorsque la valeur est chaîne vide, je suis sur mon style pour mon bouton, je vais dire que la propriété... Je vais faire un Setter pour ma Property qui va être IsEnabled, et je vais mettre à False. Vous suivez le raisonnement, j'arrive tout de suite, je mets à False. Ca veut dire, fais-moi un DataTrigger qui est lié à la combo qui s'appelle SqlServerName, sur sa propriété Text. Regarde, lorsque la valeur est égale à chaîne vide, si c'est le cas, tu fais un Setter pour la propriété IsEnable que tu mets à False. Ok, vous me suivez ? Je n'ai pas besoin de rajouter le style à mon bouton, puisque il y est déjà pour l'effet, donc tout va bien, j'essaye. Donc, je peux me connecter parce qu'il y a du texte, mais si j'enlève ce texte, maintenant, la valeur de texte est à chaîne vide, donc, vous voyez que je n'ai plus de comportement puisque mon bouton est maintenant disabled, je rajoute quelque chose et je suis enabled à nouveau, CQFD. Voyez la puissance déclarative, mais DataTrigger, ça va vous permettre de gérer beaucoup de comportements dynamiques de votre affichage, sans faire une seule ligne de code impératif.

Découvrir Windows Presentation Foundation

Améliorez la qualité de vos interfaces graphiques avec WPF (Windows Presentation Foundation). Découvrez le langage XAML, définissez votre interface graphique manuellement, etc.

3h12 (40 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Spécial abonnés
Date de parution :12 mai 2016

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !