Windows Presentation Foundation (WPF) (nom de code Avalon) est la spécification graphique de Microsoft .NET 3.0. Il intègre le langage descriptif XAML qui permet de l'utiliser d'une manière proche d'une page HTML pour les développeurs.
WPF est pré-installé avec Vista. Il est aussi possible de l'installer sur Windows XP (à partir du Service Pack 2) et Windows Server 2003.
Il est une surcouche logicielle à DirectX pour la fabrication d'interfaces utilisateurs en dehors d'applications ludiques, il remplace Windows Forms (USER et GDI) hérité de Windows 1.0 et est entièrement vectoriel, pour le dessin comme pour le texte. Cela permet d'augmenter la taille des objets en fonction de la résolution de l'écran sans effet de pixelisation, il optimise également fortement la virtualisation des applications par prise en main à distance par la réduction des informations à faire transiter sur le réseau.
L'affichage du texte se fait au moyen des procédés ClearType, TrueType ou OpenType qui améliorent le lissage des caractères. Il supporte l'affichage de nombreux formats d'images ou vidéo comme MPEG, AVI, et bien sûr WMV de Microsoft.
WPF ne sert pas uniquement à afficher l'interface graphique des logiciels tels que traitement de texte, jeux, etc., il fournit également un environnement d'exécution évolué pour la création d'applications web, nommé Silverlight. Les applications Web, nommées XBAP (Xaml Browser Application, voir (en) XAML Browser Applications), sont des programmes qui tournent dans Internet Explorer ou Firefox, sous Windows ou Mac OS (sous GNU/Linux la plate-forme s'appelle MoonLight). Par défaut, ces applications n'ont pas accès au système de fichiers pour la sécurité des données et du système d'exploitation, mais un "manifest" peut être installé pour témoigner de la confiance dans une application donnée. Ceci permet, par exemple, de faciliter le déploiement d'un logiciel sur un grand nombre de machines.
Il y a séparation entre les données et leur présentation, les deux aspects étant traités par WPF. WPF gère les bases de données pour les applications ou le web et fournit des modèles de présentation.
WPF fournit tous les éléments d'interface graphique : "widgets", fenêtres, boutons, champs de texte, menus, listes, etc. La description de l'interface se fait en XAML bien qu'il soit toujours possible de générer des interfaces dynamiques en code managé.
WPF offre la possibilité aux différents développeurs de créer leurs propres composants, par agrégation (UserControl) ou dérivation (CustomControl)[1] de composants existants.
L'une des particularités de WPF est de dissocier le contrôle, au sens "composant" du terme (Entrées/Sorties, Événements, etc.) de son graphisme. De fait, pour un contrôle donné, créer ou remplacer le graphisme (au sens large du terme, c'est-à-dire en incluant les animations, les sons, etc.) se fait de manière particulièrement aisée. On parle alors de "Template" de Control.
Ainsi, l'arbre XAML des composants, souvent nommé arbre "logique", est doublé d'un arbre Visuel, déterminé à l'exécution, et prend en compte les différents "Templates" des contrôles de l'arbre logique, telles que définis via le XAML ou référencés, dans le Code Behind[2].
Les applications WPF fonctionnent sous XP à condition que le framework .NET (anciennement appelé 'WinFX') soit installé.
WPF est une interface graphique qui se retrouve sous différentes formes :
Le .Net Micro Framework est fourni avec une interface graphique légèrement fondée sur WPF et sans support de XAML.
« SilverLight (code-name WPF/E) est le nom de code d’une solution navigateur multi-plateforme fondée sur XAML qui améliore les présentations à base de contenu riche (2D, animation, dessin vectoriel, vidéo et audio) en complément du code HTML »
La première CTP de Silverlight a été livrée le . La version 1.0, disponible depuis le permet d’agir avec l’utilisateur grâce au JavaScript. Avec la version 1.1, disponible en alpha depuis le , il est possible d'intégrer directement du code C# et VB.NET compilé.
Le runtime n'excède pas 2 Mo (taille maximum fixée par Microsoft) et comprend donc un sous ensemble de XAML (ne supportant pas la 3D par exemple).
La version 2.0 (anciennement 1.1) est disponible depuis . C'est toujours une version beta, elle est néanmoins opérationnelle, car certains sites web l'utilisent.
La version 3.0 finale a été mise en ligne début elle inclut notamment le fonctionnement "out of browser" qui permet d'installer l'application sur la machine de l'utilisateur en local
La version 4.0 gère nativement le multicast ainsi qu'un système de DRM basé sur la technologie PlayReady. Notons également le support de la webcam, du clic droit, du rendu HTML et texte riche, les impressions, et une meilleure intégration avec le système d'exploitation (glisser-déposer avec Microsoft Office par exemple).
L'interface graphique utilisée pour le projet Mono/Moonlight utilise le Framework Cairo [1] dû à son espace de nom "System.Drawing" et sa compatibilité avec GDI+ (libgidplus). Il a fallu 5 ans pour une implémentation du Framework .NET 2.0 avec Windows Forms. L'implémentation de WPF par Mono n'est pour l'instant (2014) pas prévue, par manque de ressources et d'intérêt[3].
Il existe des outils de développement pour développer des applications WPF. La plupart sont commercialisés.
Les 3 autres composants de .NET 3.0 sont :