Version en ligne PowerShell et WPF OFFERTE ! Windows ...7.1.1 Action après un simple clic (gauche)...

23
Jérôme BEZET-TORRES Damien VAN ROBAEYS PowerShell et WPF Développez des interfaces graphiques modernes et robustes En téléchargement des scripts des exemples + QUIZ Version en ligne OFFERTE ! pendant 1 an

Transcript of Version en ligne PowerShell et WPF OFFERTE ! Windows ...7.1.1 Action après un simple clic (gauche)...

Page 1: Version en ligne PowerShell et WPF OFFERTE ! Windows ...7.1.1 Action après un simple clic (gauche) sur un Control. . . .98 7.1.2 Action après avoir effectué un clic droit sur un

Pow

erSh

ell e

t WPF

D

ével

oppe

z de

s in

terf

aces

gra

phiq

ues

mod

erne

s et

robu

stes

PowerShell et WPF Développez des interfaces graphiques modernes et robustes

Jérôme BEZET-TORRES est Consultant Formateur sur les technologies Systèmes et Réseau dans différents environ-nements et professeur d’informatique dans l’Académie de Lyon en BTS SIO (Services informatiques aux organisa-tions) option Infrastructure, Systèmes et Réseaux. Il est certifié sur Windows 7 et MCSA sur Windows Server 2008 et 2012. Il est aussi reconnu MCT (Microsoft Certified Trainer) et VMware Certified Professional 5. Il dispense réguliè-rement des formations sur la virtualisation ainsi que sur les technologies de déploiement des systèmes d’exploitation.

Damien VAN ROBAEYS est Ingénieur Système chez Metsys, partenaire et pure player Microsoft. Spécialiste de PowerShell, il est également reconnu MVP Microsoft (Most Valuable Professional) dans les catégories Cloud et Data-center et Management. Ses domaines d’expertise gravitent autour de l’environnement du poste de travail, du déploie-ment MDT et de tout ce qui a trait à l’automatisation avec PowerShell. Il anime également une communauté autour de PowerShell et WPF sur son site systanddeploy.com, sur les réseaux sociaux et sur le site dédié Powershell-WPF.com.

Ce livre a pour objectif d’aider le lecteur à comprendre comment allier PowerShell et WPF pour développer des interfaces graphiques, à la fois robustes et esthétiques, permettant de gérer des tâches initiées par des scripts PowerShell.Après un rappel sur le lien qui peut exister entre PowerShell et les interfaces graphiques à travers Windows Forms et WPF, les auteurs introduisent les fondamentaux du langage XAML (ses avantages, son fonctionne-ment, sa syntaxe…) puis la création d’un projet WPF avec Visual Studio. Le lecteur étudie ensuite comment créer des interfaces graphiques à l’aide de balises XAML et comment les lier à des scripts PowerShell. Les auteurs détaillent également les différents Controls graphiques pour l’affichage, la saisie de texte ou encore la sélection d’éléments (boutons, zones de saisie, listes déroulantes…) ainsi que les moyens d’interagir avec l’interface graphique depuis PowerShell. Un chapitre est également dédié à l’exploitation de bibliothèques externes permettant la réalisation de différents types d’action comme l’ajout de menus spécifiques ou encore la réalisation d’un glisser/déposer depuis un PC vers l’interface graphique.Les auteurs consacrent la suite des chapitres à la réalisation d’une interface graphique basique incluant plusieurs Controls. À partir de cette interface, le lecteur découvre comment intégrer différents thèmes pour la rendre plus esthétique, et notamment les thèmes Metro Design de Windows 10 et Material Design d’Android.Pour finir, les auteurs présentent une série d’outils qu’ils ont développés avec PowerShell et WPF et qui uti-lisent le thème Metro Design ainsi que quelques composants Windows Forms utiles et que le lecteur pourra réutiliser dans une application WPF.Les scripts et applications donnés en exemples dans le livre sont disponibles en téléchargement sur le site www.editions-eni.fr et sur le GitHub des Editions ENI : www.github.com/EditionsENI/Powershell_WPF

Téléchargementwww.editions-eni.fr.fr

sur www.editions-eni.fr : b Les scripts des exemples du livre.b Les projets d’exemples du livre.

ISSN : 1960-3444ISBN : 978-2-409-02020-9

54 €

Pour plus d’informations :

Jérôme BEZET-TORRES

Damien VAN ROBAEYS

PowerShell et WPF

Développez des interfaces graphiques modernes et robustes

En téléchargement

des scripts

des exemples

+ QUIZVersion en ligne

OFFERTE !pendant 1 an

Page 2: Version en ligne PowerShell et WPF OFFERTE ! Windows ...7.1.1 Action après un simple clic (gauche) sur un Control. . . .98 7.1.2 Action après avoir effectué un clic droit sur un

1Table des matières

Avant-propos

1. Objectifs du livre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2. À qui ce livre s'adresse-t-il ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3. Connaissances préliminaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

4. Remerciements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

Chapitre 1Interface graphique et PowerShell

1. Ressources utiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191.1 Les exemples du livre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191.2 PowerShell GUI & WPF Facebook. . . . . . . . . . . . . . . . . . . . . . . . 211.3 Site PowerShell-WPF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211.4 Nos sites respectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221.5 Le French PowerShell User Group . . . . . . . . . . . . . . . . . . . . . . . . 221.6 Le site de PowerShell du Zéro . . . . . . . . . . . . . . . . . . . . . . . . . . . 231.7 Autres sites intéressants. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

2. PowerShell et les interfaces graphiques. . . . . . . . . . . . . . . . . . . . . . . . 242.1 Présentation de Windows Forms. . . . . . . . . . . . . . . . . . . . . . . . . 242.2 Présentation de WPF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

Les éléments à télécharger sont disponibles à l'adresse suivante :http://www.editions-eni.fr

Saisissez la référence de l'ouvrage EPPOWWPF dans la zone de recherche et validez. Cliquez sur le titre du livre puis sur le bouton de téléchargement.

lcroise
Tampon
Page 3: Version en ligne PowerShell et WPF OFFERTE ! Windows ...7.1.1 Action après un simple clic (gauche) sur un Control. . . .98 7.1.2 Action après avoir effectué un clic droit sur un

2Développez des interfaces graphiques modernes et robustes

PowerShell et WPF

Chapitre 2XAML, le cœur de notre interface

1. XAML c’est quoi ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

2. Avantages du XAML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3. Fonctionnement global de XAML . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

4. Les Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

5. La syntaxe XAML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

6. Les attributs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356.1 Les attributs Width et Height . . . . . . . . . . . . . . . . . . . . . . . . . . . 366.2 L'attribut Tooltip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366.3 L'attribut IsEnabled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376.4 Les attributs BorderThickness et BorderBrush . . . . . . . . . . . . . . 386.5 L'attribut Margin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

7. Comment trouver les attributs disponibles ? . . . . . . . . . . . . . . . . . . . 40

8. Espace de noms et mappage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418.1 Mais qu’est-ce qu’un espace de noms ?. . . . . . . . . . . . . . . . . . . . 418.2 Comment est organisé un espace de noms ? . . . . . . . . . . . . . . . 42

9. Customisation de la fenêtre. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439.1 Taille de la fenêtre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439.2 Choisir où s’affichera sa fenêtre . . . . . . . . . . . . . . . . . . . . . . . . . 449.3 Titre de la fenêtre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449.4 Icône de la fenêtre. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459.5 Modifier le curseur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469.6 Afficher dans la barre de tâches . . . . . . . . . . . . . . . . . . . . . . . . . . 489.7 Taille de la fenêtre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499.8 Modifications des bordures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509.9 Permettre le redimensionnement . . . . . . . . . . . . . . . . . . . . . . . . 51

Page 4: Version en ligne PowerShell et WPF OFFERTE ! Windows ...7.1.1 Action après un simple clic (gauche) sur un Control. . . .98 7.1.2 Action après avoir effectué un clic droit sur un

3Table des matières

Chapitre 3WPF avec quoi ? Comment ?

1. Les outils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

2. Visual Studio 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552.1 Installation de Visual Studio 2019 Community. . . . . . . . . . . . . 57

2.1.1 Créer un projet WPF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582.1.2 L'interface de Visual Studio 2019 Community. . . . . . . . . 612.1.3 Application PowerShell . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

3. Kaxaml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713.1 L'interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

3.1.1 Section Outils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723.1.2 Section Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733.1.3 Section Rendu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

4. Les éditeurs de texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

Chapitre 4PowerShell et XAML

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

2. Rôles des fichiers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782.1 XAML pour notre interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782.2 PS1 pour notre code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782.3 Comment organiser son projet ? . . . . . . . . . . . . . . . . . . . . . . . . . 782.4 Notre projet dans ce chapitre. . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

3. Première méthode : deux fichiers distincts . . . . . . . . . . . . . . . . . . . . . 803.1 Lier PowerShell et XAML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803.2 Chargement de l'assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

3.2.1 Comment charger l’assembly ? . . . . . . . . . . . . . . . . . . . . . 823.2.2 Plus d’informations sur cette assembly. . . . . . . . . . . . . . . 83

4. Deuxième méthode : Tout dans le PS1 . . . . . . . . . . . . . . . . . . . . . . . . 89

5. Déclarations de nos Controls. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

Page 5: Version en ligne PowerShell et WPF OFFERTE ! Windows ...7.1.1 Action après un simple clic (gauche) sur un Control. . . .98 7.1.2 Action après avoir effectué un clic droit sur un

4Développez des interfaces graphiques modernes et robustes

PowerShell et WPF

6. Des actions sur les Controls. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92

7. Controls et Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 977.1 Events les plus courants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98

7.1.1 Action après un simple clic (gauche) sur un Control . . . . 987.1.2 Action après avoir effectué un clic droit sur un Control . 987.1.3 Action après avoir relâché le clic droit sur un Control. . . 987.1.4 Action lorsque le curseur de la souris

passe sur un Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 987.1.5 Action lorsque le curseur de la souris

quitte un Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997.1.6 Action après avoir effectué un double clic

sur un Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997.1.7 Action après avoir utilisé la roulette de la souris

sur un Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99

8. Cycle de vie d'une interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 998.1 À quoi correspondent ces évènements ? . . . . . . . . . . . . . . . . . . 103

9. Minimiser et afficher depuis le PowerShell. . . . . . . . . . . . . . . . . . . . 106

Chapitre 5Les Controls XAML

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

2. Control d'action simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

3. Les Controls d'affichage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1103.1 Label . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1103.2 DataGrid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

3.2.1 Implémentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1133.2.2 Utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1163.2.3 Afficher le contenu d'un XML dans le DataGrid . . . . . . 1283.2.4 Ajouter de la couleur à notre Control . . . . . . . . . . . . . . . 130

Page 6: Version en ligne PowerShell et WPF OFFERTE ! Windows ...7.1.1 Action après un simple clic (gauche) sur un Control. . . .98 7.1.2 Action après avoir effectué un clic droit sur un

5Table des matières

4. Controls de saisie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1324.1 TextBox. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1324.2 PasswordBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136

5. Controls de sélection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1395.1 ComboBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1395.2 CheckBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1465.3 RadioButton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149

5.3.1 Un évènement par RadioButton . . . . . . . . . . . . . . . . . . . 1505.3.2 Un bouton final . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

5.4 Un évènement groupé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152

6. Autres Controls intéressants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1536.1 Menu haut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

6.1.1 Menu principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1536.1.2 Des sous-menus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1556.1.3 Ajout d'icônes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1566.1.4 Gérer les actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160

6.2 Barre de statut. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1606.3 Expander . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162

6.3.1 Qu’est-ce qu’un Expander ? . . . . . . . . . . . . . . . . . . . . . . . 1626.3.2 Comment l'utiliser ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

6.4 Scroll Bar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164

7. Générer des Controls par le PS1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1697.1 Comment faire ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1697.2 La démarche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1707.3 Allons plus loin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174

Page 7: Version en ligne PowerShell et WPF OFFERTE ! Windows ...7.1.1 Action après un simple clic (gauche) sur un Control. . . .98 7.1.2 Action après avoir effectué un clic droit sur un

6Développez des interfaces graphiques modernes et robustes

PowerShell et WPF

Chapitre 6XAML et la disposition graphique

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179

2. Le StackPanel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1792.1 Qu’est ce qu’un StackPanel ? . . . . . . . . . . . . . . . . . . . . . . . . . . . 1792.2 Appliquer le même paramétrage . . . . . . . . . . . . . . . . . . . . . . . . 1802.3 Orientation : Horizontal ou Vertical ? . . . . . . . . . . . . . . . . . . . 1852.4 Organiser et imbriquer vos Controls. . . . . . . . . . . . . . . . . . . . . 1882.5 Alignement : haut, bas, gauche, centre ? . . . . . . . . . . . . . . . . . 1962.6 Afficher ou cacher des Controls ? . . . . . . . . . . . . . . . . . . . . . . . 199

3. Applications responsives avec le Grid . . . . . . . . . . . . . . . . . . . . . . . . 2063.1 Qu'est-ce que le Grid ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2063.2 Le fonctionnement du Grid . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206

3.2.1 Compréhension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2063.2.2 Les définitions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2073.2.3 Ajout de contenu à un endroit précis . . . . . . . . . . . . . . . 2123.2.4 Fusionnement de cellule. . . . . . . . . . . . . . . . . . . . . . . . . . 2133.2.5 Grid en exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217

4. DockPanel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2224.1 Présentation du DockPanel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2224.2 Sa configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223

5. Le WrapPanel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2285.1 Présentation du WrapPanel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2285.2 Son utilisation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229

Chapitre 7Ajout de libraries

1. Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

2. Comment les utiliser ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2342.1 Où les trouver ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2342.2 Les explorer pour les exploiter . . . . . . . . . . . . . . . . . . . . . . . . . . 234

Page 8: Version en ligne PowerShell et WPF OFFERTE ! Windows ...7.1.1 Action après un simple clic (gauche) sur un Control. . . .98 7.1.2 Action après avoir effectué un clic droit sur un

7Table des matières

2.2.1 Chercher la documentation . . . . . . . . . . . . . . . . . . . . . . . 2352.2.2 Ouvrir le fichier DLL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235

3. Exemples de libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2373.1 Prérequis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2373.2 Un menu moderne (RadialMenu) . . . . . . . . . . . . . . . . . . . . . . . 237

3.2.1 Comment l'installer ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2383.2.2 Comment l'intégrer ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2403.2.3 Comment l'utiliser ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2413.2.4 Comment le customiser ? . . . . . . . . . . . . . . . . . . . . . . . . 247

3.3 Indicateurs de chargement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2503.3.1 Comment l'installer ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2513.3.2 Comment l'intégrer ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2523.3.3 Comment l'utiliser ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254

3.4 Des boîtes de dialogue modernes. . . . . . . . . . . . . . . . . . . . . . . . 2583.4.1 Comment l'installer ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2583.4.2 Comment l'intégrer ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2593.4.3 Comment l'utiliser ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261

3.5 Une barre de progression "humaine" . . . . . . . . . . . . . . . . . . . . . 2723.5.1 Comment l'installer ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2723.5.2 Comment l'intégrer ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2733.5.3 Comment l'utiliser ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274

3.6 Drag and Drop de Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2763.6.1 Dragablz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2763.6.2 GongSolutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281

3.7 Drag and Drop de contenu externe . . . . . . . . . . . . . . . . . . . . . . 2853.7.1 L'interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2863.7.2 Évènements et configuration. . . . . . . . . . . . . . . . . . . . . . 287

3.8 Création de graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2913.8.1 Comment l'installer ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2923.8.2 Comment l'intégrer ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2923.8.3 Comment l'utiliser ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293

Page 9: Version en ligne PowerShell et WPF OFFERTE ! Windows ...7.1.1 Action après un simple clic (gauche) sur un Control. . . .98 7.1.2 Action après avoir effectué un clic droit sur un

8Développez des interfaces graphiques modernes et robustes

PowerShell et WPF

3.9 Utiliser des GIFS dans votre interface . . . . . . . . . . . . . . . . . . . . 3083.9.1 Comment l'installer ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3093.9.2 Comment l'intégrer ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3093.9.3 Comment l'utiliser ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310

Chapitre 8Notre première interface

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313

2. Que doit contenir cette interface ? . . . . . . . . . . . . . . . . . . . . . . . . . . 3142.1 À quoi servira-t-elle ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3142.2 Quelle disposition ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3142.3 Prérequis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3162.4 Quels Controls ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3172.5 Gestion du positionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320

3. Et PowerShell dans tout ça ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3233.1 Chargement de l'interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3233.2 Déclaration des Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3233.3 Nos actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326

3.3.1 Quelles actions effectuer ? . . . . . . . . . . . . . . . . . . . . . . . . 3263.3.2 Nos actions finales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326

Chapitre 9Ajout de thèmes

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331

2. Qu’est-ce qu’un thème ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3312.1 Ressources assemblies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3322.2 Ressources XAML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332

3. Comment trouver son thème ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3323.1 Dans Visual Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3323.2 Sur le site NuGet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334

Page 10: Version en ligne PowerShell et WPF OFFERTE ! Windows ...7.1.1 Action après un simple clic (gauche) sur un Control. . . .98 7.1.2 Action après avoir effectué un clic droit sur un

9Table des matières

4. Installer un thème . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3364.1 En utilisant Visual Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3364.2 En utilisant nuget.exe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339

5. Utiliser un thème . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3405.1 Modification du XAML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3415.2 Modification du PS1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344

6. Quelques autres thèmes en bref . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3456.1 Infragistics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345

6.1.1 Comment le trouver ? . . . . . . . . . . . . . . . . . . . . . . . . . . . 3456.1.2 Comment l'installer ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3466.1.3 Comment l'utiliser ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349

6.2 ModernChrome . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3526.2.1 Comment le trouver ? . . . . . . . . . . . . . . . . . . . . . . . . . . . 3526.2.2 Comment l'installer ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3536.2.3 Comment l'utiliser ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354

6.3 FluentWPF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3586.3.1 FluentWPF, qu’est-ce que c’est ? . . . . . . . . . . . . . . . . . . . 3586.3.2 Comment le trouver ? . . . . . . . . . . . . . . . . . . . . . . . . . . . 3596.3.3 Comment l'installer ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3596.3.4 Comment l'utiliser ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360

6.4 Elysium . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3616.4.1 Comment le trouver ? . . . . . . . . . . . . . . . . . . . . . . . . . . . 3626.4.2 Comment l'installer ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3626.4.3 Comment l'installer ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362

Chapitre 10MahApps - Du Metro Design en quelques clics

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367

2. MahApps, qu’est-ce que c’est ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367

3. Où le trouver ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368

4. Comment le récupérer ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368

Page 11: Version en ligne PowerShell et WPF OFFERTE ! Windows ...7.1.1 Action après un simple clic (gauche) sur un Control. . . .98 7.1.2 Action après avoir effectué un clic droit sur un

10Développez des interfaces graphiques modernes et robustes

PowerShell et WPF

4.1 Installer via Visual Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3684.2 Récupérer les assemblies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370

5. Utiliser MahApps dans une application . . . . . . . . . . . . . . . . . . . . . . 3715.1 Intégrer MahApps dans le XAML . . . . . . . . . . . . . . . . . . . . . . . 3725.2 Intégrer MahApps dans le PS1. . . . . . . . . . . . . . . . . . . . . . . . . . 374

6. MahApps dans notre interface de test . . . . . . . . . . . . . . . . . . . . . . . 3746.1 Dans le XAML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3756.2 Dans le PS1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380

7. Un nouveau design en deux clics. . . . . . . . . . . . . . . . . . . . . . . . . . . . 3807.1 Un changement de couleur ? . . . . . . . . . . . . . . . . . . . . . . . . . . . 3817.2 Un changement de thème ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384

8. Des icônes dans votre application . . . . . . . . . . . . . . . . . . . . . . . . . . . 3868.1 Depuis un XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386

8.1.1 Récupérer l'assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3868.1.2 Comment les visualiser ? . . . . . . . . . . . . . . . . . . . . . . . . . 3888.1.3 Comment les ajouter ? . . . . . . . . . . . . . . . . . . . . . . . . . . . 3898.1.4 Icône dans un bouton carré . . . . . . . . . . . . . . . . . . . . . . . 3918.1.5 Icône dans un bouton rond . . . . . . . . . . . . . . . . . . . . . . . 392

8.2 Depuis une assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3938.2.1 Les différentes collections . . . . . . . . . . . . . . . . . . . . . . . . 3938.2.2 Récupérer les icônes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3948.2.3 Comment les visualiser ? . . . . . . . . . . . . . . . . . . . . . . . . . 3968.2.4 Comment les ajouter ? . . . . . . . . . . . . . . . . . . . . . . . . . . . 399

9. Changer thèmes et couleurs dynamiquement . . . . . . . . . . . . . . . . . 4029.1 Quelle est l’idée ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4029.2 Comment ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403

9.2.1 Explorer l'assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4039.2.2 Avec classe et méthode. . . . . . . . . . . . . . . . . . . . . . . . . . . 405

9.3 Détecter et changer le thème. . . . . . . . . . . . . . . . . . . . . . . . . . . 4059.3.1 Détecter le thème actuel . . . . . . . . . . . . . . . . . . . . . . . . . 4059.3.2 Changer le thème actuel . . . . . . . . . . . . . . . . . . . . . . . . . 406

Page 12: Version en ligne PowerShell et WPF OFFERTE ! Windows ...7.1.1 Action après un simple clic (gauche) sur un Control. . . .98 7.1.2 Action après avoir effectué un clic droit sur un

11Table des matières

9.4 Détecter et changer les couleurs . . . . . . . . . . . . . . . . . . . . . . . . 4079.4.1 Détecter les couleurs actuelles . . . . . . . . . . . . . . . . . . . . . 4079.4.2 Changer les couleurs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408

9.5 Le changement en action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4099.5.1 L'interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4099.5.2 Changer le thème en action . . . . . . . . . . . . . . . . . . . . . . . 4109.5.3 Changer les couleurs en action . . . . . . . . . . . . . . . . . . . . 412

9.6 Appliquer le thème Windows à son application. . . . . . . . . . . . 413

Chapitre 11Les Controls MahApps

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415

2. Bouton de barre de titre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4162.1 Qu’est-ce que c’est ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4162.2 Comment l'intégrer ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416

3. Le Flyout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4183.1 Flyout, qu’est-ce que c’est ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4183.2 Comment l'intégrer ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4193.3 Gérer le positionnement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4203.4 Gérer l'affichage du titre. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422

3.4.1 Modifier le texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4223.4.2 Cacher le titre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423

3.5 Modifier le thème . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4233.6 Fermer le Flyout après un délai . . . . . . . . . . . . . . . . . . . . . . . . . 424

4. Des badges dans vos boutons. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4254.1 Qu’est-ce que c’est ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4254.2 Comment l'intégrer ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426

4.2.1 Dans un bouton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4264.2.2 Dans un TabControl . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427

Page 13: Version en ligne PowerShell et WPF OFFERTE ! Windows ...7.1.1 Action après un simple clic (gauche) sur un Control. . . .98 7.1.2 Action après avoir effectué un clic droit sur un

12Développez des interfaces graphiques modernes et robustes

PowerShell et WPF

4.3 Modifications basiques. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4304.3.1 Modification de la valeur . . . . . . . . . . . . . . . . . . . . . . . . . 4304.3.2 Modification de la couleur . . . . . . . . . . . . . . . . . . . . . . . . 4304.3.3 Modifier l'emplacement du badge . . . . . . . . . . . . . . . . . . 4314.3.4 Modifier le badge avec PowerShell . . . . . . . . . . . . . . . . . 433

5. Des boîtes de dialogue modernes. . . . . . . . . . . . . . . . . . . . . . . . . . . . 4345.1 Qu’est-ce que c’est ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4345.2 Comment ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434

5.2.1 Cherchons des informations . . . . . . . . . . . . . . . . . . . . . . 4355.2.2 Exploration de l'assembly. . . . . . . . . . . . . . . . . . . . . . . . . 4355.2.3 Comment l'utiliser ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438

5.3 Les Dialogs en action . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4435.3.1 Dialog simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4435.3.2 Dialog de confirmation . . . . . . . . . . . . . . . . . . . . . . . . . . 4445.3.3 Dialog de login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446

6. Le FlipView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4476.1 Qu’est-ce que c’est ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4476.2 Comment l'intégrer ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448

6.2.1 FlipView avec images . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4486.2.2 FlipView avec icônes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449

6.3 Gérer le FlipView avec PowerShell . . . . . . . . . . . . . . . . . . . . . . 451

7. ToggleSwitch : choisir entre deux valeurs . . . . . . . . . . . . . . . . . . . . 4527.1 Qu’est-ce que c’est ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4527.2 Comment l'intégrer ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4537.3 Comment l'utiliser ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453

7.3.1 Afficher un titre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4547.3.2 Changer les valeurs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4547.3.3 Un ToggleSwitch arrondi . . . . . . . . . . . . . . . . . . . . . . . . 4557.3.4 Gérer le statut avec PowerShell . . . . . . . . . . . . . . . . . . . . 456

8. Le Slider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4578.1 Qu’est-ce que c’est ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4578.2 Comment l'intégrer ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458

Page 14: Version en ligne PowerShell et WPF OFFERTE ! Windows ...7.1.1 Action après un simple clic (gauche) sur un Control. . . .98 7.1.2 Action après avoir effectué un clic droit sur un

13Table des matières

8.3 Comment l'utiliser ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4588.4 Gérer la valeur avec PowerShell . . . . . . . . . . . . . . . . . . . . . . . . . 459

9. Le NumericUpDown . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4609.1 Qu’est-ce que c’est ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4609.2 Comment l'utiliser ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460

10. Le ProgressRing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46110.1 Qu’est-ce que c’est ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46110.2 Comment l'intégrer ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461

11. Les Tiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46211.1 Qu’est-ce que c’est ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46211.2 Comment l'intégrer ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463

11.2.1Tuile basique. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46311.2.2Tuile avec icône . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46611.2.3Tuile avec image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467

Chapitre 12Material Design Theme

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469

2. Material Design, qu’est-ce que c’est ? . . . . . . . . . . . . . . . . . . . . . . . . 469

3. Où le trouver ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470

4. Le Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4704.1 Récupération de l'application. . . . . . . . . . . . . . . . . . . . . . . . . . . 4704.2 Comment l'utiliser ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471

5. Comment le récupérer ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4735.1 Installer via Visual Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4735.2 Récupérer les assemblies. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474

6. Première application Material Design . . . . . . . . . . . . . . . . . . . . . . . . 4776.1 Modification du XAML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4776.2 Intégrer Material Design dans le PS1 . . . . . . . . . . . . . . . . . . . . 479

7. Interface de test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480

Page 15: Version en ligne PowerShell et WPF OFFERTE ! Windows ...7.1.1 Action après un simple clic (gauche) sur un Control. . . .98 7.1.2 Action après avoir effectué un clic droit sur un

14Développez des interfaces graphiques modernes et robustes

PowerShell et WPF

8. Un design en deux clics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4868.1 Changer de couleur ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4868.2 Quelles sont les couleurs disponibles ? . . . . . . . . . . . . . . . . . . . 487

9. Des icônes dans votre application . . . . . . . . . . . . . . . . . . . . . . . . . . . 4919.1 Icônes Material Design. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4929.2 Création d'une nouvelle interface avec des icônes . . . . . . . . . . 494

10. Quelques contrôles intéressants . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50110.1 Expander . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501

10.1.1Expander Vertical . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50210.1.2Expander Horizontal . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50410.1.3Un peu de design en plus ?. . . . . . . . . . . . . . . . . . . . . . . . 506

10.2 Les ColorZone Material Design. . . . . . . . . . . . . . . . . . . . . . . . . 50710.3 Les Card. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512

Chapitre 13Exemples d'outils Metro Design

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517

2. Un faux Windows 10 en WPF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5172.1 Un faux Windows 10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5172.2 À quoi cela ressemble-t-il ?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5182.3 Où le trouver ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522

3. Barre de progression mode Windows 10 . . . . . . . . . . . . . . . . . . . . . . 5223.1 Qu’est-ce que c’est ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5223.2 À quoi cela ressemble-t-il ?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5233.3 Où le trouver ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5233.4 Le XAML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5233.5 Le PS1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525

4. Interface Quick AD Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5264.1 Pour quoi faire ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5264.2 Où la trouver ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5294.3 Le XAML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530

Page 16: Version en ligne PowerShell et WPF OFFERTE ! Windows ...7.1.1 Action après un simple clic (gauche) sur un Control. . . .98 7.1.2 Action après avoir effectué un clic droit sur un

15Table des matières

4.4 Le PS1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533

5. Des informations pour vos utilisateurs . . . . . . . . . . . . . . . . . . . . . . . 5335.1 Qu’est-ce que c’est ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5335.2 Où la trouver ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5335.3 À quoi cela ressemble-t-il ?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534

6. Afficher des prérequis dans vos applications . . . . . . . . . . . . . . . . . . 5366.1 Qu’est-ce que c’est ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5366.2 À quoi cela ressemble-t-il ?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5366.3 Comment l'utiliser ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537

6.3.1 Partie XAML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5376.3.2 Partie PowerShell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5386.3.3 Que peut-on retenir ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5406.3.4 Autres exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540

7. Interface Twitter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5427.1 Qu’est-ce que c’est ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5427.2 À quoi cela ressemble-t-il ?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5427.3 Où la trouver ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5427.4 Le XAML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5437.5 Le PS1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545

8. Créer des applications Material Design. . . . . . . . . . . . . . . . . . . . . . . 5468.1 Qu’est-ce que c’est ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5468.2 À quoi cela ressemble-t-il ?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5478.3 Où le trouver ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5478.4 Comment l'utiliser ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5478.5 Le code XAML et PS1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551

Page 17: Version en ligne PowerShell et WPF OFFERTE ! Windows ...7.1.1 Action après un simple clic (gauche) sur un Control. . . .98 7.1.2 Action après avoir effectué un clic droit sur un

16Développez des interfaces graphiques modernes et robustes

PowerShell et WPF

Chapitre 14Du Forms dans vos applications

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555

2. Forcer le style moderne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555

3. Sélection de composant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5563.1 Sélection de dossier. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5563.2 Sélection de fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558

4. Boîte de dialogue. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561

5. Notification utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5655.1 Notification d'information . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5665.2 Notification d'erreur. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569

Page 18: Version en ligne PowerShell et WPF OFFERTE ! Windows ...7.1.1 Action après un simple clic (gauche) sur un Control. . . .98 7.1.2 Action après avoir effectué un clic droit sur un

Chapitre 4

PowerShell et XAML

PowerShell et XAML1. Introduction

Dans le deuxième chapitre, nous avons vu ce qu’était le cœur de notre inter-face, XAML.

Nous avons également vu comment créer et éditer un fichier XAML.

Dans ce chapitre, nous allons voir comment lier notre interface avec notrecode PowerShell.

Nous allons également voir comment ajouter des actions sur nos Controls afinde créer une interactivité avec l’utilisateur.

Il est important de bien comprendre le rôle de chaque partie dans son projetWPF et PowerShell.

Ce projet est composé de deux parties :

– PowerShell

– XAML

lcroise
Tampon
Page 19: Version en ligne PowerShell et WPF OFFERTE ! Windows ...7.1.1 Action après un simple clic (gauche) sur un Control. . . .98 7.1.2 Action après avoir effectué un clic droit sur un

© E

dit

ions

EN

I -

All r

ights

rese

rved

78Développez des interfaces graphiques modernes et robustes

PowerShell et WPF

2. Rôles des fichiers

2.1 XAML pour notre interface

La partie XAML, comme mentionné au chapitre XAML, le cœur de notre in-terface, représentera la partie graphique, et uniquement graphique, de notreprojet.

Nous intégrerons dans cette partie tous nos Controls et aspects graphiques.

2.2 PS1 pour notre code

La partie PowerShell quant à elle représentera la partie code de notre projet.C’est la partie qui permettra de gérer toutes les actions sur les Controls liées ànotre interface.

2.3 Comment organiser son projet ?

Les deux parties XAML et PS1 peuvent s’utiliser de deux façons :

– Deux fichiers distincts (méthode que je recommande pour une meilleurelisibilité et davantage de maniabilité).

– Tout inclure dans le fichier PowerShell.

Ces deux méthodes seront traitées dans ce chapitre.

Page 20: Version en ligne PowerShell et WPF OFFERTE ! Windows ...7.1.1 Action après un simple clic (gauche) sur un Control. . . .98 7.1.2 Action après avoir effectué un clic droit sur un

79PowerShell et XAMLChapitre 4

2.4 Notre projet dans ce chapitre

Le projet qui servira d'exemple dans ce chapitre aura pour nom MonProjet.

L’interface sera telle que ci-dessous :

Cette interface est représentée par le code XAML ci-dessous :

<Windowxmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="Interface WPF - Chapitre 4" Width="380" Height="200"><Grid><StackPanel Orientation="Vertical" HorizontalAlignment="Center"Margin="0,10,0,0"><Label Content="Notre interface WPF" FontSize="20" HorizontalAlignment="Center"/><GroupBox Header="Chargement du dossier" Margin="0,10,0,0" Height="65" Width="300"><StackPanel Orientation="Horizontal" Margin="0,0,0,0" HorizontalAlignment="Center"><Button Name="MonBouton" Content="Browse" Width="80" Height="20"/><TextBox Name="MonTextBox" Width="200" Height="20"/></StackPanel></GroupBox></StackPanel></Grid></Window>

Page 21: Version en ligne PowerShell et WPF OFFERTE ! Windows ...7.1.1 Action après un simple clic (gauche) sur un Control. . . .98 7.1.2 Action après avoir effectué un clic droit sur un

© E

dit

ions

EN

I -

All r

ights

rese

rved

80Développez des interfaces graphiques modernes et robustes

PowerShell et WPF

3. Première méthode : deux fichiers distincts

Notre projet sera composé de deux fichiers tels que ci-dessous :

– MonProjet.xaml : notre interface

– MonProjet.ps1 : notre code

3.1 Lier PowerShell et XAML

Ouvrons donc le fichier PowerShell et ajoutons-y le code suivant afin de char-ger notre fichier MonProjet.xaml :

[xml]$MonXAML = get-content -path "MonProjet.xaml"$Reader=(New-Object System.Xml.XmlNodeReader $MonXAML)$Interface = [Windows.Markup.XamlReader]::Load($Reader)$Interface.ShowDialog() | Out-Null

Que fait ce code ?

– Nous allons d'abord transformer notre XAML en un objet XML en utilisantSystem.Xml.XmlNodeReader.

– Ensuite, nous chargeons ce dernier en utilisant [Windows.Markup.Xa-mlReader]::Load.

– Enfin, nous affichons notre interface en utilisant $Interface.Show-Dialog().

Page 22: Version en ligne PowerShell et WPF OFFERTE ! Windows ...7.1.1 Action après un simple clic (gauche) sur un Control. . . .98 7.1.2 Action après avoir effectué un clic droit sur un

81PowerShell et XAMLChapitre 4

Si nous lançons le fichier PowerShell, nous obtenons l’erreur suivante :

Pourquoi ?

La raison est simple, il nous manque l’assembly permettant le fonctionne-ment de WPF.

Présentation des assemblies

L’assembly à utiliser ici est l’assembly presentationframework et se présentesous la forme d’un fichier .dll.

C’est cette assembly qui contiendra tous les Controls que nous voulons utili-ser.

C’est également par elle que notre interface WPF pourra s’afficher.

Dans le chapitre XAML, le cœur de notre interface, nous avons retrouvé uneréférence à cette assembly à deux reprises.

En effet, lors de la création d’un projet WPF via Visual Studio, en cliquant sur[F12] sur un Control, par exemple un TextBox, nous obtenons l’informationci-dessous :

Page 23: Version en ligne PowerShell et WPF OFFERTE ! Windows ...7.1.1 Action après un simple clic (gauche) sur un Control. . . .98 7.1.2 Action après avoir effectué un clic droit sur un

© E

dit

ions

EN

I -

All r

ights

rese

rved

82Développez des interfaces graphiques modernes et robustes

PowerShell et WPF

Si vous cherchez des informations sur un Control sur le site de Microsoft, parexemple un Button, vous obtiendrez l’information ci-dessous.

Remarque

Vous trouverez également une explication sur ces assemblies au chapitreInterface graphique et PowerShell.

Ce qui nous amène donc à notre seconde étape qui en réalité est donc la pre-mière.

3.2 Chargement de l'assembly

3.2.1 Comment charger l’assembly ?

Pour charger l’assembly presentationframework, nous utiliserons la ligneci-dessous :

[System.Reflection.Assembly]::LoadWithPartialName('presentationframework')

En exécutant cette ligne dans une console PowerShell, nous obtenons lerésultat suivant :

Nous pouvons remarquer que le chemin de cette assembly est local.

En parcourant ce dossier, nous retrouvons également d’autres assemblies.