2. Sommaire
Windows Presentation Foundation
Les Bases
Le DataBinding
Les animations / Les transformations
La 3D
Interop WPF/WindowsForms
Conclusion
Ressources
5. Windows Presentation
Foundation
Création d’interfaces utilisateur innovatrices
Augmentation de la productivité Designer-
Développeur
Réalisation d’un déploiement d’application
flexible
Accroissement de la base existante de code et de
l’ensemble des techniques
Une UX supérieure réunissant l’interface, les médias et les documents
6. Productivité Développeur-
Designer
• Outils Microsoft pour les
développeurs et les designers
• Programmation déclarative avec
XAML
• Outils d’éditeurs tiers (Aurora de
Mobiform, ZAM 3D de Electric Rain)
Les designers conçoivent les UI
Avec XAML, les
développeurs et les
designers peuvent affiner
leur collaboration Et les développeurs ajoute la logique métier
7. Prérequis
WPF a été introduit avec le Framework .net 3
Nécessite Windows XP SP2 ou plus.
Intégré dans Visual Studio 2008 et plus
Pour créer les interface graphique, nous pouvons
utiliser un nouveau logiciel de Microsoft spécialement
dédié à la création d'interface graphique WPF. Ce
programme, appelé Microsoft Expression Blend,
permet de créer très facilement les interfaces
graphiques, d'un point de vue « design » alors que
VS est plus orienté « code ».
8. XAML
XAML = Extensible Application Markup Language
• Facilement utilisable, basé sur le XML
• Code et contenu sont séparés
• Peut-être affiché dans un navigateur ou une application
<Button Width="100"> OK
<Button.Background>
LightBlue
</Button.Background>
</Button>
XAML
Button b1 = new Button();
b1.Content = "OK";
b1.Background = new
SolidColorBrush(Colors.LightBlue);
b1.Width = 100;
C#
Dim b1 As New Button
b1.Content = "OK"
b1.Background = New _
SolidColorBrush(Colors.LightBlue)
b1.Width = 100
VB.NET
9. XAML
Définition: un langage XML qui décrit votre
interface.
Utilité: utilisé pour créer deux types de
programme:
Un logiciel classique, sous Windows. C'est alors
WPF qui se charge de comprendre le XAML pour
créer votre interface graphique et la faire interagir
avec votre code .net (C#, Vb.net, ...).
Une interface Web. Dans ce cas c'est SilverLight
qui prend en charge votre code. Le programme
s'exécutera dans votre navigateur, comme les
applications Flash par exemple.
11. Les contrôles
Windows Presentation Foundation fournit un nombre
important de contrôles:
Button
Frame
Grid
ListBox
Etc..
Certains contrôles (contrôles de date,
NumericUpDown, ColorPicker) ne sont pas présents
D’autres (Canvas, DockPanel, Grid, etc…) sont
destinés au positionnement des éléments
12. Hello World: XAML
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<TextBlock Text="Hello WPF" />
</Window>
TextBlock est l’équivalent à label en winforms
13. Equivalent C#
using System;
using System.Windows;
using System.Windows.Controls;
namespace HelloWorld1
{
class HelloWindow
{
static void Main()
{
// Création de la fenetre
Window fenetre = new Window();
// Assignation des propriétées
fenetre.Title = "Window1";
fenetre.Width = 300;
fenetre.Height = 300;
// Création du TextBlock
TextBlock tblock = new TextBlock();
tblock.Text = "Hello World";
// Ajout du contrôle à la fentre
fenetre.Content = tblock;
// Création de l'application et démarrage avec notre fentre
Application app = new Application();
app.Run(fenetre);
}
}
}
15. Conteneurs : la grille
Le contrôle Window ne peut contenir qu'un seul
élément.
Les éléments chargés d'en contenir d'autres sont
appelés « conteneurs ».
La grille peut être vue comme un tableau en XHTML.
Ce tableau représente, comme son nom l'indique,
une grille avec plusieurs colonnes et lignes. Chaque
contrôle est alors positionné dans une des cellules du
tableau. Évidemment, chaque ligne et colonne peut
être de dimension différente. De plus un contrôle peut
appartenir à plusieurs cases à la fois.
16. Dimensions (Width, Height)
Les dimension peuvent être définit de 3 manières:
une valeur fixe, permettant de définir précisément la
taille de l'élément (plusieurs unités sont disponibles) ;
une portion de l'espace disponible, représentée par une
étoile.
la valeur « Auto » pour que l'élément s'adapte au
contenu.
Une valeur fixe peut être de plusieurs types :
le dip (unité px) qui est celle par défaut (ex : « 10pix »
ou « 10 ») ;
le pouce (unité in, 1in=96pix, ex : 10in) ;
le centimètre (unité cm, 1cm=96/2.54pix, ex : 10cm) ;
le point (unité pt, 1pt = 96/72 pix, ex 10pt).
18. Positionnement des contrôles
dans les cellules
Si vous ajoutez des contrôles à votre grille, ils vont
tous se trouver par défaut assignés à la première
cellule.
Pour spécifier la position dans la grille on utilise les
propriétés « Grid.Column » et « Grid.Row» pour
spécifier la colonne
Il s'agit d'un nouveau concept. Les propriétés
attachées (atached property). Ainsi en dehors d'une
grille, aucun contrôle ne possède ces propriétés et
tous les contrôles les possèdent à l'intérieur.
Il peut parfois être intéressant qu'un contrôle
remplisse plusieurs cellules. Cela se réalise en
utilisant les propriétés attachées «Grid.RowSpan» et
« Grid.ColumnSpan ».
23. Cas particulier : les grilles
uniformes
Il s'agit de grilles dont toutes les colonnes ont la
même largeur et toutes les lignes la même
hauteur.
Il n'y a donc pas besoin de « ColumnDefinition »
ou de « RowDefinition ». Il y a deux propriétés
Rows et Columns qui définissent le nombre de
lignes et de colonnes.
Les contrôles sont ajoutés à la grille dans l'ordre
24. Exemple avec une grille 3x2 remplie
de boutons.
<UniformGrid Rows="2" Columns="3">
<Button>Bouton 1</Button>
<Button>Bouton 2</Button>
<Button>Bouton 3</Button>
<Button>Bouton 4</Button>
<Button>Bouton 5</Button>
<Button>Bouton 6</Button>
</UniformGrid>
27. Les styles
Définissent l’apparence des éléments au sein de
l’application
Utilisation des Setter pour définir la propriété à
modifier et sa valeur:
<Style x:Key="Slider_RepeatButton" TargetType="{x:Type RepeatButton}">
<Setter Property="OverridesDefaultStyle" Value="True" />
<Setter Property="IsTabStop" Value="false" />
<Setter Property="Focusable" Value="false" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type RepeatButton}">
<Border Background="Transparent" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
28. Les Templates
• Contenu variable
• Template = Définition du contenu
• Notion de « graph d’objets »:
• Button
• ContentPresenter
• Image
• …
Templated
Button
29. Texte et Documents
Support des polices ClearType
Support de l’anti-aliasing
API pour faciliter la lecture
Zoom
Recherche
Multipages
31. Data Binding
L’interface utilisateur peut être liée à des objets .NET ou à du XML
Les “Dependency properties” peuvent également être liées aux objets
ADO.NET ou aux Web Services
Les “Data templates” peuvent être appliqués aux données métiers
Possibilité de représenter visuellement une classe Person, Product, etc….
UI & Databinding
<StackPanel>
<Label>Select A Customer</Label>
<ListBox
Name="myListBox"
Background="HoneyDew"
ItemsSource="{Binding
{StaticResource myDataSource}}"
</ListBox>
</StackPanel>
Cible Source
Dependency Object Object
Dependency
Property
Property
TwoWay
OneWay
OneWayToSource
32. Les Animations /
Transformations
<StackPanel>
<StackPanel.Triggers>
<EventTrigger RoutedEvent=“Button.Click">
<EventTrigger.Actions>
<BeginStoryboard>
<BeginStoryboard.Storyboard>
<Storyboard>
<ColorAnimation To="Yellow" Duration="0:0:0.5“
Storyboard.TargetName="TheBrush"
Storyboard.TargetProperty="Color" />
<DoubleAnimation To="45" Duration="0:0:2"
Storyboard.TargetName="LowerEllipseTransform"
Storyboard.TargetProperty="Angle" />
...
</StackPanel.Triggers>
</StackPanel>
• Fournissent une meilleure
expérience utilisateur
• Peuvent être utilisées sur
toutes les Dependency
Properties
• Classe Transform:
• Rotation
• Translation
• Agrandissement/Réduction
33. WPF et la 3D
• Les APIs de WPF pour la 3D facilitent la création de contrôles/dessins
3D
• Namespace System.Windows.Media.Media3D:
• Définit des transformations, animations, outils pour créer des
contrôles et dessins 3D
35. Conclusions
Fournir des expériences utilisateur innovantes
Améliorer la productivité Développeur-Designer
Permettre un déploiement applicatif fléxible
Accroitre la base de code et les techniques
existantes
36. Ressources
WPF @ Windows Vista Developer Center
http://msdn.microsoft.com/windowsvista/building/presentati
on/
http://wpf.netfx3.com
http://blogs.developpeur.org/tom
http://morpheus.developpez.com
Contact: t-thole@microsoft.com
Notes de l'éditeur
On va intéresser aujourd’hui a l’un de meilleur technologie de Framework DOTNET le WPF (Win….)
Nous exploitons dans cet séance les éléments suivants:
Commençons par une présentation de WPF
Windows Presentation Foundation (WPF), c’est une approche productive et unifiée de l’interface utilisateur, des médias et des documents afin de livrer une expérience utilisateur inégalée.
C’est un ensemble de nouvelles APIs constituant la base du système d’affichage de Windows Vista/7/8 et 10.
Création d’interfaces utilisateur innovatrices:
Une approche unifiée de l’interface utilisateur, des médias et des documents
Un moteur de rendu vectoriel et indépendant de la résolution; des accélérations matériel
Un fonctionnement sur Windows Vista, Windows 8 , Windows 10 et Windows Server 2003
Réalisation d’un déploiement d’application flexible
Ecriture du code une seule fois puis déploiement en tant qu’application simple ou application navigateur
Accroissement de la base existante de code et de l’ensemble des techniques
Interopérabilité avec les WindowsForms, Win32, DirectX, MFC, ActiveX
Les connaissances acquises le Framework .NET, les langages .NET et l’IDE Visual Studio
Si le design est important, les designers le sont aussi
Enfin, si les designers sont importants, il faut faire en sorte que ce soit les premiers dans le processus de développement de logiciel.
Avant, les designers concevaient les interfaces graphiques, et transmettaient leurs intentions aux développeurs sous formes d’images (PNG, JPG, et…).
Le développeur devait alors essayer de reproduire le contenu de ces images dans son programme. Si le designer créait un contrôle non standard, le développeur devait alors coder ce contrôle en utilisant GDI+ ou une autre technologie.
Ce processus fonctionnait mais était parfois long et couteux, et il arrivait que le résultat ne soit pas ce à quoi nous nous attendions.
Afin d’améliorer la collaboration entre le développeur et le designer, Microsoft a créé le XAML, un format utilisé à la fois par les développeurs et les designers pour accéder aux fonctionnalités de WPF: le XAML est généré par le designer puis il est ensuite utilisé par le développeur.
Autre avantage du XAML, la communication peut s’effectuer dans les 2 sens: il est tout à fait possible à un développeur de créer une interface graphique sobre (en XAML) puis de la délivrer à un designer qui va lui donner du style (et redéfinir son apparence).
Microsoft a développé des outils, aussi bien coté designer que coté développeur:
- Designer: La gamme Expression (Interactive Designer, Graphic Designer)
- Développeur: Visual Studio (avec éditeur XAML, etc….)
XAML = Extensive Application Markup Language
Programmation déclarative:
Applications développées en utilisant simplement des éléments XAML
Code et contenu séparé:
Forte collaboration entre le développeur et le designer
Designers font le design, les développeurs ajoutent la logique métier
Peut-être affiché dans un navigateur ou une application
Le code XAML n’est pas lié à un type d’application mais sera affiché de la même façon que l’on développe une application navigateur ou une application Windows
XAML va vous permettre de déclarer une hiérarchie d’objets, accompagnés de leur propriétés.
Une fois compilé, votre XAML vous permet d’obtenir la définition d’un ou plusieurs objets.
Contrôles de positionnement:
Canvas: Positionnement exact grâce aux coordonnées X et Y
DockPanel: Pour docker les éléments sans se soucier de leur coordonnées
StackPanel: Pour placer les éléments de haut en bas ou de gauche à droite
Grid: Positionnement dans une grille, à l’aide de lignes et colonnes
Avec WPF, le contenu d’un contrôle n’est jamais vraiment définit: un bouton ne contiendra pas forcément du texte mais pourra contenir une image, etc…
Les Templates sont utilisés pour définir quel sera le contenu d’un contrôle et de quelle façon ce contenu sera affiché: dans un bouton inséré dans un ListBoxItem, dans une image insérée dans un bouton, etc….
On a donc une hiérarchie des éléments, qui nous permet de définir le graph d’objets constituant nos contrôles.
29
WPF supporte la plupart des formats audio/vidéo exstants:
WMV
ASF
MPEG
AVI
Data binding : Processus qui consiste à établir une connection entre l’interface utilisateur et la logique
Dependency properties: Propriétés particulières auxquelles vous allez pouvoir:
Appliquer un style
DataBinder
Animer
Donner une valeur par défaut
Etc..
Exemple de Dependency Property: Background ou FontSize
Interopérabilité WPF-Windows Forms:
Héberger un contrôle WPF dans une WindowsForms en utilisant un contrôle ElementHost
Héberger un contrôle WindowsForms dans une application WPF en utilisant un contrôle WindowsFormsHost
=> Mixer les capacités de WPF et des WindowsForms pour augmenter l’expérience utilisateur