Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici

Le développement d'applications Windows

Présentation de WPF

Les applications Windows sont des applications fenêtrées présentant des données d’une manière bien plus graphique et agréable que la fenêtre de ligne de commande. Pour développer ce type d’application, .NET propose depuis ses débuts la technologie Windows Forms. La version 3.0 du framework .NET, sortie en 2006, est arrivée avec une nouvelle technologie de présentation : WPF (Windows Presentation Foundation). Celle-ci a apporté plusieurs améliorations notables tant au niveau technique qu’à celui du développement :

  • La définition de l’interface est effectuée à l’aide du langage de balisage XAML (eXtensible Application Markup Language) et non plus avec du code C#.

  • Le découplage entre l’interface et le code métier peut être effectué plus facilement grâce à la notion de binding.

  • L’affichage ne s’appuie plus sur la brique logicielle GDI mais sur DirectX, ce qui implique que certains calculs peuvent être déportés sur le GPU.

  • Tous les composants WPF utilisent le dessin vectoriel.

  • Au sein d’un composant, l’aspect graphique et l’aspect fonctionnel sont très peu liés, ce qui permet une modification graphique poussée des composants.

Malgré sa robustesse, la technologie Windows Forms est aujourd’hui fréquemment délaissée au profit de WPF. Les raisons principales de ce choix sont liées d’une à part à l’expérience utilisateur, puisque WPF permet de créer simplement des applications fluides et à l’aspect moderne, et d’autre part à des motifs purement techniques, car les possibilités de découplage offertes par WPF améliorent la testabilité et la maintenabilité des applications.

Microsoft mise aujourd’hui sur WPF et les technologies utilisant XAML. Une équipe de développeurs du géant du logiciel a d’ailleurs mentionné lors de la conférence BUILD 2014 que la technologie Windows Forms est aujourd’hui en phase de maintenance, ce qui signifie qu’elle ne fera plus l’objet de mises à jour au niveau des fonctionnalités, bien que les problèmes détectés...

Utilisation des contrôles

La section précédente vous a rapidement montré la structure d’une application WPF. À cette occasion, vous avez pu remarquer que l’interface graphique est composée de contrôles définis par du code XAML ou, plus rarement, C#.

Ces contrôles font tous partie d’une hiérarchie leur permettant d’avoir des propriétés communes, la plupart du temps liées au positionnement. Chaque contrôle hérite ainsi d’un contrôle parent auquel il ajoute des fonctionnalités de manière à fournir un nouvel ensemble constitué d’un visuel et d’un comportement qui lui est associé.

Visual Studio intègre nativement un concepteur visuel qui permet la manipulation des contrôles d’une manière plus graphique, donc plus simple. Il génère ainsi lui-même le code XAML qui définit l’interface. Contrairement au concepteur visuel Windows Forms, le concepteur de WPF crée un code XAML qu’il est possible de manipuler directement, toute modification du code étant répercutée sur la partie de conception graphique et inversement.

1. Ajout de contrôles

À la création d’un nouveau projet d’application WPF, Visual Studio affiche par défaut plusieurs éléments :

  • L’Explorateur de solutions,

  • La fenêtre Propriétés,

  • Une fenêtre d’édition scindée en deux parties : le concepteur visuel dans sa partie haute, l’éditeur de code XAML étant quant à lui situé dans la partie basse.

images/1907-001.png

La fenêtre d’édition est destinée à la modification de la fenêtre principale de l’application, nommée MainWindow. Le concepteur visuel présente une vue de cette fenêtre, qui n’a pour l’heure aucun contenu.

Plusieurs fenêtres masquées automatiquement sont positionnées sur la gauche de l’environnement. Dans le contexte d’une création ou modification d’interface graphique, la plus importante est la fenêtre Boîte à outils.

images/07-002.png

Cette fenêtre liste les différents contrôles utilisables dans une interface WPF. Elle permet également leur sélection...

Les principaux contrôles

Le framework .NET fournit en standard de nombreux contrôles WPF couvrant la majorité des besoins relatifs à la création d’une interface graphique moderne. Ils sont définis dans la librairie PresentationFramework.dll, dans l’espace de noms System.Windows.Controls.

La majorité de ces contrôles possède un jeu de propriétés communes permettant de gérer leur comportement dans la mise en page de l’application ainsi que leur aspect. Les principales sont listées ci-dessous :

Height et Width

Définissent la hauteur et la largeur du contrôle.

HorizontalAlignment

et

VerticalAlignment

Définissent comment le contrôle doit se placer dans l’espace qui est disponible horizontalement et verticalement. Les valeurs peuvent être Left (alignement à gauche), Center (centré), Right (alignement à droite) et Stretch (occupation de tout l’espace disponible) pour l’alignement horizontal, et Top (alignement en haut), Bottom (alignement en bas), Center et Stretch pour l’alignement vertical.

Margin

Définit l’espace qui doit rester libre autour des limites du contrôle.

Padding

Définit l’espace qui doit rester libre entre le bord du contrôle et son contenu.

BorderBrush

Définit la couleur de la bordure du contrôle.

BorderThickness

Définit l’épaisseur de trait de la bordure du contrôle.

Visibility

Définit l’état de visibilité du contrôle. Trois valeurs sont disponibles : Visible, Hidden (le contrôle est masqué mais la zone qu’il devrait occuper est indisponible), Collapsed (le contrôle est masqué mais la zone qu’il devrait occuper est libérée).

Les contrôles WPF peuvent être regroupés en plusieurs catégories définies par leur objectif.

1. Contrôles de fenêtrage

Les contrôles de fenêtrage sont essentiels dans une application WPF. Ce sont eux qui sont les conteneurs de l’interface graphique que vous allez créer.

Deux contrôles standards appartiennent à cette catégorie. Ils correspondent à des modes de navigation distincts.

a. Window

Le contrôle Window permet, comme son nom l’indique, de définir une fenêtre...

Interactions clavier et souris

Dans un environnement graphique tel que celui fourni par les applications WPF, il est essentiel d’être capable de réagir aux interactions entre l’utilisateur et le logiciel afin de fournir une expérience fluide et cohérente. Ces interactions sont aujourd’hui presque uniquement réalisées à l’aide de deux périphériques : le clavier et la souris. WPF fournit différents événements déclenchés lorsque l’utilisateur effectue une action sur l’un de ces périphériques. Ces événements sont générés par le type System.Windows.UIElement, qui est un ancêtre commun de la quasi-totalité des contrôles WPF.

1. Événements clavier

Avec WPF, deux événements principaux sont déclenchés lorsque l’utilisateur appuie sur une touche de son clavier : KeyDown et KeyUp. Ils correspondent respectivement à l’appui et au relâchement de la touche et sont déclenchés dans ce même ordre.

Le délégué associé à ces deux événements possède la définition suivante :

public delegate void KeyEventHandler(object sender, KeyEventArgs e); 

Les données transmises dans le paramètre de type KeyEventArgs permettent de connaître la touche physique du clavier impliquée dans l’événement déclenché, ainsi que son état. L’exemple de code suivant affiche dans la fenêtre Sortie de Visual Studio le nom de la touche manipulée ainsi que son état au travers des propriétés IsUp, IsDown et KeyStates de l’objet KeyEventArgs.

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
        InitializeComponent(); 
 
        KeyDown += Window_ManipulationToucheClavier; 
    } 
 
    private void Window_ManipulationToucheClavier(object sender, 
KeyEventArgs e) 
    { 
        Console.WriteLine("{0} \t IsUp = {1} \t IsDown = {2} \t 
KeyStates = {3}", e.Key, e.IsUp, e.IsDown, e.KeyStates); ...

Aller plus loin avec WPF

WPF est une technologie dont la structure permet de pousser très loin la personnalisation d’une interface graphique. Visual Studio est fourni avec de nombreux outils, dont Blend, qui se révèle être une aide précieuse pour l’élaboration des interfaces graphiques.

WPF permet aussi, grâce aux bindings notamment, un découplage presque parfait entre la partie visuelle d’une application et le code métier qui lui est associé. La mise en œuvre de cette séparation est le plus souvent effectuée à l’aide du patron de conception MVVM (Model - View - ViewModel).

1. Introduction à l’utilisation de Blend

Blend pour Visual Studio est un outil apparu initialement sous le nom d’Expression Blend dans la suite Expression de Microsoft en 2019. Il est depuis ses débuts destiné à produire du code XAML pour les applications WPF, puis son champ d’action a été élargi pour inclure Silverlight et Windows Phone 7. Après sa version 4, il a été introduit dans la gamme d’outils livrés avec Visual Studio, et l’ensemble de technologies qu’il supporte a évolué de manière à inclure les applications Windows Phone et Windows 8/8.1, puis les applications universelles ciblant les plateformes Windows 10 (PC & smartphones).

Blend peut être décrit comme étant une version orientée design de Visual Studio. En effet, Visual Studio possède un concepteur visuel basique et des dizaines d’outils destinés à aider le développeur dans sa tâche d’écriture de code. Blend est quant à lui constitué d’un éditeur de code ainsi que d’un concepteur visuel complété par de nombreux outils graphiques. Le fossé entre Visual Studio et Blend se comble de plus en plus à la sortie de chaque nouvelle version, la dernière apportant le support d’IntelliSense et une interface très proche de celle de Visual Studio, ce qui favorise une courbe d’apprentissage rapide.

Blend est installé en tant que composant des charges de travail « Développement .NET » ou « Développement pour la plateforme Windows universelle »....