SlideShare une entreprise Scribd logo
1  sur  36
WPF
Windows Presentation
Foundation
Sommaire
 Windows Presentation Foundation
 Les Bases
 Le DataBinding
 Les animations / Les transformations
 La 3D
 Interop WPF/WindowsForms
 Conclusion
 Ressources
Présentation de WPF
Windows Presentation
Foundation
Windows Presentation
Foundation
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
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
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
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 ».
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
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.
Les bases
Windows Presentation
Foundation
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
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
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);
}
}
}
Première action
----------------MainWindow.xaml-----------
<Window x:Class="WpfApplication3.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">
<Button Click="Button_Click">Cliquez ici !</Button>
</Window>
----------------MainWindow.xaml.cs---------
private void Button_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("Coucou");
this.Close();
}
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.
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).
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="5cm"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="70"/>
<RowDefinition Height="*"/>
<RowDefinition Height="2*"/>
</Grid.RowDefinitions>
</Grid>
Définition des lignes et colonnes
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 ».
<Button Grid.Column="0" Grid.Row="0" Content="Bouton 1"/>
<Button Grid.Column="1" Grid.Row="0" Content="Bouton 2"/>
<Button Grid.Column="2" Grid.Row="0" Content="Bouton 3"/>
<Button Grid.Column="0" Grid.Row="1" Content="Bouton 4"/>
<Button Grid.Column="1" Grid.Row="1" Content="Bouton 5"/>
<Button Grid.Column="2" Grid.Row="1" Content="Bouton 6"/>
<Button Grid.Column="0" Grid.Row="2" Content="Bouton 7"/>
<Button Grid.Column="1" Grid.Row="2" Content="Bouton 8"/>
<Button Grid.Column="2" Grid.Row="2" Content="Bouton 9"/>
Remplissage de plusieurs cellules
<Grid> <Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="5cm"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="70"/>
<RowDefinition Height="*"/>
<RowDefinition Height="2*"/>
</Grid.RowDefinitions>
<Button Grid.Column="0" Grid.Row="0"
Grid.ColumnSpan="2" Content="Bouton 1"/>
<Button Grid.Column="2" Grid.Row="0"
Grid.RowSpan="3" Content="Bouton 3"/>
<Button Grid.Column="0" Grid.Row="1" Content="Bouton 4"/>
<Button Grid.Column="1" Grid.Row="1" Content="Bouton 5"/> <Button
Grid.Column="0" Grid.Row="2" Content="Bouton 7"/> <Button Grid.Column="1"
Grid.Row="2" Content="Bouton 8"/>
</Grid>
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
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>
Atelier Tableau
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>
Les Templates
• Contenu variable
• Template = Définition du contenu
• Notion de « graph d’objets »:
• Button
• ContentPresenter
• Image
• …
Templated
Button
Texte et Documents
 Support des polices ClearType
 Support de l’anti-aliasing
 API pour faciliter la lecture
 Zoom
 Recherche
 Multipages
<Border Width="400"
BorderBrush="Green"
BorderThickness="9">
<StackPanel>
<MediaElement Source="aero.wmv" />
<Button>Hello</Button>
</StackPanel>
</Border>
Audio et Video
 Formats: WMV, MPEG, AVIs
 Peuvent être synchronisés avec des animations
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
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
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
Intéropérabilité WindowsForms /
WPF
Incorporez WPF dans vos applications WindowsForms tout
en conservant votre existant
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
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

Contenu connexe

Similaire à WPF.pptx

Calculatrice scientifique en JAVA(AWT)
Calculatrice scientifique en JAVA(AWT)Calculatrice scientifique en JAVA(AWT)
Calculatrice scientifique en JAVA(AWT)MOHAMMED MOURADI
 
Responsive design, Canvas et SVG
Responsive design, Canvas et SVGResponsive design, Canvas et SVG
Responsive design, Canvas et SVGChristian SUMBANG
 
Conception Web Avec Dreamweaver
Conception Web Avec DreamweaverConception Web Avec Dreamweaver
Conception Web Avec Dreamweaverdavidbx
 
Web-In 2010: Programmation Native iOS (French)
Web-In 2010: Programmation Native iOS (French)Web-In 2010: Programmation Native iOS (French)
Web-In 2010: Programmation Native iOS (French)Fred Brunel
 
A la découverte de vue.js
A la découverte de vue.jsA la découverte de vue.js
A la découverte de vue.jsBruno Bonnin
 
Python avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementiellePython avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementielleECAM Brussels Engineering School
 
Formation iPhone ENSI by (Orange Tunisie)
Formation iPhone ENSI by (Orange Tunisie)Formation iPhone ENSI by (Orange Tunisie)
Formation iPhone ENSI by (Orange Tunisie)Farouk Mezghich
 
L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8davrous
 
Symfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantSymfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantHugo Hamon
 
SPA avec Angular et SignalR (FR)
SPA avec Angular et SignalR (FR)SPA avec Angular et SignalR (FR)
SPA avec Angular et SignalR (FR)Rui Carvalho
 
Enib cours c.a.i. web - séance #1 - html5 css3-js - 2
Enib   cours c.a.i. web - séance #1 - html5 css3-js - 2Enib   cours c.a.i. web - séance #1 - html5 css3-js - 2
Enib cours c.a.i. web - séance #1 - html5 css3-js - 2Horacio Gonzalez
 
La mobilité dans Drupal
La mobilité dans DrupalLa mobilité dans Drupal
La mobilité dans DrupalAdyax
 
ASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSRenaud Dumont
 
Introduction au développement Android
Introduction au développement AndroidIntroduction au développement Android
Introduction au développement AndroidSteve Tremblay
 
W3 cafe ie10etwindows8
W3 cafe ie10etwindows8W3 cafe ie10etwindows8
W3 cafe ie10etwindows8davrous
 

Similaire à WPF.pptx (20)

Calculatrice scientifique en JAVA(AWT)
Calculatrice scientifique en JAVA(AWT)Calculatrice scientifique en JAVA(AWT)
Calculatrice scientifique en JAVA(AWT)
 
Responsive design, Canvas et SVG
Responsive design, Canvas et SVGResponsive design, Canvas et SVG
Responsive design, Canvas et SVG
 
Conception Web Avec Dreamweaver
Conception Web Avec DreamweaverConception Web Avec Dreamweaver
Conception Web Avec Dreamweaver
 
Web-In 2010: Programmation Native iOS (French)
Web-In 2010: Programmation Native iOS (French)Web-In 2010: Programmation Native iOS (French)
Web-In 2010: Programmation Native iOS (French)
 
A la découverte de vue.js
A la découverte de vue.jsA la découverte de vue.js
A la découverte de vue.js
 
Python avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementiellePython avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementielle
 
Formation iPhone ENSI by (Orange Tunisie)
Formation iPhone ENSI by (Orange Tunisie)Formation iPhone ENSI by (Orange Tunisie)
Formation iPhone ENSI by (Orange Tunisie)
 
L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8L'histoire d'html5 pour les développeurs windows phone 8
L'histoire d'html5 pour les développeurs windows phone 8
 
Formulaires
FormulairesFormulaires
Formulaires
 
Symfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantSymfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 Performant
 
Les Widgets
Les WidgetsLes Widgets
Les Widgets
 
Silverlight
SilverlightSilverlight
Silverlight
 
SPA avec Angular et SignalR (FR)
SPA avec Angular et SignalR (FR)SPA avec Angular et SignalR (FR)
SPA avec Angular et SignalR (FR)
 
Silverlight
SilverlightSilverlight
Silverlight
 
Enib cours c.a.i. web - séance #1 - html5 css3-js - 2
Enib   cours c.a.i. web - séance #1 - html5 css3-js - 2Enib   cours c.a.i. web - séance #1 - html5 css3-js - 2
Enib cours c.a.i. web - séance #1 - html5 css3-js - 2
 
La mobilité dans Drupal
La mobilité dans DrupalLa mobilité dans Drupal
La mobilité dans Drupal
 
ASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJSASP.NET MVC, Web API & KnockoutJS
ASP.NET MVC, Web API & KnockoutJS
 
Introduction au développement Android
Introduction au développement AndroidIntroduction au développement Android
Introduction au développement Android
 
W3 cafe ie10etwindows8
W3 cafe ie10etwindows8W3 cafe ie10etwindows8
W3 cafe ie10etwindows8
 
HTML5
HTML5HTML5
HTML5
 

Dernier

666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptxSAID MASHATE
 
Saint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxSaint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxMartin M Flynn
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxAsmaa105193
 
systeme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertsysteme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertChristianMbip
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.Franck Apolis
 
Formation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipFormation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipM2i Formation
 
7 PPT sue le project de fin d'étude.pptx
7 PPT sue le project de fin d'étude.pptx7 PPT sue le project de fin d'étude.pptx
7 PPT sue le project de fin d'étude.pptxrababouerdighi
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETMedBechir
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETMedBechir
 
Présentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxPrésentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxrababouerdighi
 
Guide Final de rédaction de mémoire de fin d'étude
Guide Final de rédaction de mémoire de fin d'étudeGuide Final de rédaction de mémoire de fin d'étude
Guide Final de rédaction de mémoire de fin d'étudeBenamraneMarwa
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .Txaruka
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptxTxaruka
 

Dernier (15)

Pâques de Sainte Marie-Euphrasie Pelletier
Pâques de Sainte Marie-Euphrasie PelletierPâques de Sainte Marie-Euphrasie Pelletier
Pâques de Sainte Marie-Euphrasie Pelletier
 
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
666148532-Formation-Habilitation-ELECTRIQUE-ENTREPRISE-MARS-2017.pptx
 
Saint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxSaint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptx
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. Marocpptx
 
systeme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertsysteme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expert
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.
 
Formation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadershipFormation M2i - Comprendre les neurosciences pour développer son leadership
Formation M2i - Comprendre les neurosciences pour développer son leadership
 
Evaluación Alumnos de Ecole Victor Hugo
Evaluación Alumnos de Ecole  Victor HugoEvaluación Alumnos de Ecole  Victor Hugo
Evaluación Alumnos de Ecole Victor Hugo
 
7 PPT sue le project de fin d'étude.pptx
7 PPT sue le project de fin d'étude.pptx7 PPT sue le project de fin d'étude.pptx
7 PPT sue le project de fin d'étude.pptx
 
Cours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSETCours SE Gestion des périphériques - IG IPSET
Cours SE Gestion des périphériques - IG IPSET
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
 
Présentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxPrésentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptx
 
Guide Final de rédaction de mémoire de fin d'étude
Guide Final de rédaction de mémoire de fin d'étudeGuide Final de rédaction de mémoire de fin d'étude
Guide Final de rédaction de mémoire de fin d'étude
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
 
Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptx
 

WPF.pptx

  • 2. Sommaire  Windows Presentation Foundation  Les Bases  Le DataBinding  Les animations / Les transformations  La 3D  Interop WPF/WindowsForms  Conclusion  Ressources
  • 3. Présentation de WPF Windows Presentation Foundation
  • 4. Windows Presentation Foundation 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
  • 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); } } }
  • 14. Première action ----------------MainWindow.xaml----------- <Window x:Class="WpfApplication3.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"> <Button Click="Button_Click">Cliquez ici !</Button> </Window> ----------------MainWindow.xaml.cs--------- private void Button_Click(object sender, RoutedEventArgs e) { MessageBox.Show("Coucou"); this.Close(); }
  • 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).
  • 17. <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="5cm"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="70"/> <RowDefinition Height="*"/> <RowDefinition Height="2*"/> </Grid.RowDefinitions> </Grid> Définition des lignes et colonnes
  • 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 ».
  • 19. <Button Grid.Column="0" Grid.Row="0" Content="Bouton 1"/> <Button Grid.Column="1" Grid.Row="0" Content="Bouton 2"/> <Button Grid.Column="2" Grid.Row="0" Content="Bouton 3"/> <Button Grid.Column="0" Grid.Row="1" Content="Bouton 4"/> <Button Grid.Column="1" Grid.Row="1" Content="Bouton 5"/> <Button Grid.Column="2" Grid.Row="1" Content="Bouton 6"/> <Button Grid.Column="0" Grid.Row="2" Content="Bouton 7"/> <Button Grid.Column="1" Grid.Row="2" Content="Bouton 8"/> <Button Grid.Column="2" Grid.Row="2" Content="Bouton 9"/>
  • 20.
  • 21. Remplissage de plusieurs cellules <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="5cm"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="70"/> <RowDefinition Height="*"/> <RowDefinition Height="2*"/> </Grid.RowDefinitions> <Button Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="2" Content="Bouton 1"/> <Button Grid.Column="2" Grid.Row="0" Grid.RowSpan="3" Content="Bouton 3"/> <Button Grid.Column="0" Grid.Row="1" Content="Bouton 4"/> <Button Grid.Column="1" Grid.Row="1" Content="Bouton 5"/> <Button Grid.Column="0" Grid.Row="2" Content="Bouton 7"/> <Button Grid.Column="1" Grid.Row="2" Content="Bouton 8"/> </Grid>
  • 22.
  • 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>
  • 25.
  • 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
  • 30. <Border Width="400" BorderBrush="Green" BorderThickness="9"> <StackPanel> <MediaElement Source="aero.wmv" /> <Button>Hello</Button> </StackPanel> </Border> Audio et Video  Formats: WMV, MPEG, AVIs  Peuvent être synchronisés avec des animations
  • 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
  • 34. Intéropérabilité WindowsForms / WPF Incorporez WPF dans vos applications WindowsForms tout en conservant votre existant
  • 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

  1. On va intéresser aujourd’hui a l’un de meilleur technologie de Framework DOTNET le WPF (Win….)
  2. Nous exploitons dans cet séance les éléments suivants:
  3. Commençons par une présentation de WPF
  4. 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.
  5. 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
  6. 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….)
  7. 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.
  8. 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
  9. 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.
  10. 29
  11. WPF supporte la plupart des formats audio/vidéo exstants: WMV ASF MPEG AVI
  12. 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
  13. 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