SlideShare ist ein Scribd-Unternehmen logo
1 von 28
Améliorez la réactivité de vos
applications Windows 8.1
5 astuces qui vont tout changer !
Présentation
Loïc
ReboursConsultant .NET - Avanade
MVP Client Development
@loicrebours
www.blog.loicrebours.fr
Une application réactive pour une
meilleure expérience utilisateur
Tip 1
Eviter les dangers
d’async/await
Eviter les dangers d’async/await
UI thread
Async method
Await
Async work
Await
Await
UI thread
Async method
Async work
Tip 1 - Démo
Tip 2
Charger les données de façon
incrémentale
Charger les données de façon incrémentale
Inutile d’afficher des milliers d’éléments au chargement d’une
page
Il faut charger les données quand l’utilisateur en a besoin
Le chargement incrémental est moins consommateur de ressources
ISupportIncrementalLoadingpublic interface ISupportIncrementalLoading
{
bool HasMoreItems { get; }
IAsyncOperation<LoadMoreItemsResult> LoadMoreItemsAsync(uint count);
}
Tip 2 - Démo
Tip 3
Créer des animations
performantes
Créer des animations performantes
Pour le rendu XAML, il y a 2 threads importants
Le thread UI
Parsing du XAML
Layout de la scène
Rendering des éléments
Le thread Compositor
Compose les animations des éléments visuels
Instructions GPU / CPU
Créer des animations performantes
Il existe deux types d’animation
Les animations indépendantes
Peuvent être calculées entièrement lors de leur création
Gérées par le thread Compositor, utilisent la puissance du GPU
Scaling, rotation, translation …
Les animations dépendantes
Ne peuvent pas être calculées à l’avance.
Utilisation intensive du thread UI
Changement de taille de police, modification de la largeur ou hauteur d’un élément …
Tip 3 - Démo
Tip 4 Optimiser le code XAML
Optimiser le code XAML
Un peu de théorie
Au lancement de l’application, tous les fichiers XAML référencés sont parsés
Parser du XAML et créer les objets correspondants en mémoire peut être long
Les ressources peuvent être placés à plusieurs endroits :
- dans une page
- dans la classe App
- dans un Resource Dictionary
Il est important de factoriser les ressources
Optimiser le code XAML
<Application ...> <!-- BAD CODE DO NOT USE.-->
<Application.Resources> <!-- BAD CODE DO NOT USE.-->
<SolidColorBrush x:Key="DefaultAppTextColor" Color="#FF3F42CC"/> <!-- BAD CODE DO NOT
USE.-->
<SolidColorBrush x:Key="HomePageTextColor" Color="#FF3F42CC"/> <!-- BAD CODE DO NOT
USE.-->
<SolidColorBrush x:Key="SecondPageTextColor" Color="#FF3F42CC"/> <!-- BAD CODE DO NOT
USE.-->
<SolidColorBrush x:Key="ThirdPageTextColor" Color="#FF3F42CC"/> <!-- BAD CODE DO NOT USE.-
->
N’incluez pas de ressources spécifiques à certaines pages dans
le Resource Dictionary de l’application
Optimiser le code XAML
Factorisez les ressources identiques
<StackPanel> <!-- BAD CODE DO NOT USE.-->
<TextBox> <!-- BAD CODE DO NOT USE.-->
<TextBox.Foreground> <!-- BAD CODE DO NOT USE.-->
<SolidColorBrush Color="#FF3F42CC"/> <!-- BAD CODE DO NOT USE.--
>
</TextBox.Foreground> <!-- BAD CODE DO NOT USE.-->
</TextBox> <!-- BAD CODE DO NOT USE.-->
<Button Content="Submit"> <!-- BAD CODE DO NOT USE.-->
<Button.Foreground> <!-- BAD CODE DO NOT USE.-->
<SolidColorBrush Color="#FF3F42CC"/> <!-- BAD CODE DO NOT USE.--
>
</Button.Foreground> <!-- BAD CODE DO NOT USE.-->
</Button> <!-- BAD CODE DO NOT USE.-->
Plutôt que d’écrire …
Optimiser le code XAML
Factorisez les ressources identiques
Ecrivez …
<Page ...>
<Page.Resources>
<SolidColorBrush x:Key="TextColor" Color="#FF3F42CC"/>
</Page.Resources>
<StackPanel>
<TextBox Foreground="{StaticResource TextColor}" />
<Button Content="Submit" Foreground="{StaticResource TextColor}" />
</StackPanel>
</Page>
Optimiser le code XAML
Evitez d’utiliser des éléments non nécessaires. Le rendu sera
plus rapide.
<Grid> <!-- BAD CODE DO NOT USE.-->
<Rectangle Fill="Black"/> <!-- BAD CODE DO NOT USE.-->
</Grid> <!-- BAD CODE DO NOT USE.-->
<Grid Background="Black" />
Plutôt que d’écrire …
Ecrivez …
Optimiser le code XAML
Evitez les overdraw.
Utilisez les subtilités de XAML (CacheMode de Canvas ci-
dessous)
<Canvas Background="White" CacheMode="BitmapCache">
<Ellipse Height="40" Width="40" Fill="Blue"/>
<Ellipse Canvas.Left="21" Height="40" Width="40" Fill="Blue"/>
<Ellipse Canvas.Top="13" Canvas.Left="10" Height="40" Width="40"
Fill="Blue"/> </Canvas>
Tip 4 - Démo
Tip 5
Utiliser le cache sans
modération
Utiliser le cache sans modération
Cache des données
Ne chargez vos données qu’une fois. Sérialisez et désérialisez-les ensuite.
Cache des images
Stocker vos images en local. Utilisez le cache HTTP.
Cache des pages
Utilisez la propriété NavigationCacheMode.
Tip 5 - Démo
Merci !
A votre dispo 
@loicrebours
loic.rebours@outlook.com
blog.loicrebours.fr
C# et XAML sous Windows 8.1
26
Windows 8.1 de A à Z
http://bit.ly/ENIW81
Concevez, développez, architecturez,
diagnostiquez, testez, monétisez et
déployez votre application ….
20 % sur la version numérique avec le
code : UXMSLOIC214
Journée Windows 8 / UX le 28 mars chez MS
France
Une après-midi de sessions
Coopération développeur / designer
Trucs et astuces pour améliorer l’UX de vos applications
Design et ergonomie pour le développeur
Imaginez de nouvelles expériences pour vos applications de
demain
Retours d’expérience sur des applications
Des conseils pour vos applications et de
nombreux cadeaux à gagner ! 27
6 développeurs
8 UX designers
Améliorer la réactivité de vos applications Windows 8.1

Weitere ähnliche Inhalte

Ähnlich wie Améliorer la réactivité de vos applications Windows 8.1

Partie 2: Angular
Partie 2: AngularPartie 2: Angular
Partie 2: AngularHabib Ayad
 
Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5davrous
 
Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Alexandre Marie
 
La mobilité dans Drupal
La mobilité dans DrupalLa mobilité dans Drupal
La mobilité dans DrupalAdyax
 
Rich Desktop Applications
Rich Desktop ApplicationsRich Desktop Applications
Rich Desktop Applicationsgoldoraf
 
jQuery mobile / PhoneGap : contenus dynamiques client-side
jQuery mobile / PhoneGap : contenus dynamiques client-sidejQuery mobile / PhoneGap : contenus dynamiques client-side
jQuery mobile / PhoneGap : contenus dynamiques client-sidemaru.maru
 
Evolutions et nouveaux outils SEO
Evolutions et nouveaux outils SEOEvolutions et nouveaux outils SEO
Evolutions et nouveaux outils SEODimitri Brunel
 
Performance des sites dynamiques : une histoire de cache à tous les niveaux
Performance des sites dynamiques : une histoire de cache à tous les niveauxPerformance des sites dynamiques : une histoire de cache à tous les niveaux
Performance des sites dynamiques : une histoire de cache à tous les niveauxMy_Sic
 
Flex, une techno RIA incontournable pour les futures app web ?
Flex, une techno RIA incontournable pour les futures app web ?Flex, une techno RIA incontournable pour les futures app web ?
Flex, une techno RIA incontournable pour les futures app web ?GreenIvory
 
Cours 1/3 "Architecture Web"
Cours 1/3 "Architecture Web"Cours 1/3 "Architecture Web"
Cours 1/3 "Architecture Web"Adyax
 
Css.more.or.less
Css.more.or.lessCss.more.or.less
Css.more.or.lessVISEO
 
Examen principal- php - correction
Examen principal- php - correctionExamen principal- php - correction
Examen principal- php - correctionInes Ouaz
 
Node.js, le pavé dans la mare
Node.js, le pavé dans la mareNode.js, le pavé dans la mare
Node.js, le pavé dans la mareValtech
 
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et JavascriptCodedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascriptcodedarmor
 
Drupal, les hackers, la sécurité & les (très) grands comptes
Drupal, les hackers, la sécurité & les (très) grands comptesDrupal, les hackers, la sécurité & les (très) grands comptes
Drupal, les hackers, la sécurité & les (très) grands comptesJean-Baptiste Guerraz
 

Ähnlich wie Améliorer la réactivité de vos applications Windows 8.1 (20)

Partie 2: Angular
Partie 2: AngularPartie 2: Angular
Partie 2: Angular
 
Drupal & Mobilité
Drupal & MobilitéDrupal & Mobilité
Drupal & Mobilité
 
Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5
 
Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)Drupal7 - Bonnes Pratiques (Partie 1)
Drupal7 - Bonnes Pratiques (Partie 1)
 
La mobilité dans Drupal
La mobilité dans DrupalLa mobilité dans Drupal
La mobilité dans Drupal
 
Tutorial android
Tutorial androidTutorial android
Tutorial android
 
SAPIENS2009 - Module 4B
SAPIENS2009 - Module 4BSAPIENS2009 - Module 4B
SAPIENS2009 - Module 4B
 
Rich Desktop Applications
Rich Desktop ApplicationsRich Desktop Applications
Rich Desktop Applications
 
jQuery mobile / PhoneGap : contenus dynamiques client-side
jQuery mobile / PhoneGap : contenus dynamiques client-sidejQuery mobile / PhoneGap : contenus dynamiques client-side
jQuery mobile / PhoneGap : contenus dynamiques client-side
 
Evolutions et nouveaux outils SEO
Evolutions et nouveaux outils SEOEvolutions et nouveaux outils SEO
Evolutions et nouveaux outils SEO
 
Performance des sites dynamiques : une histoire de cache à tous les niveaux
Performance des sites dynamiques : une histoire de cache à tous les niveauxPerformance des sites dynamiques : une histoire de cache à tous les niveaux
Performance des sites dynamiques : une histoire de cache à tous les niveaux
 
La Sécurité Sur Le Web
La Sécurité Sur Le WebLa Sécurité Sur Le Web
La Sécurité Sur Le Web
 
Flex, une techno RIA incontournable pour les futures app web ?
Flex, une techno RIA incontournable pour les futures app web ?Flex, une techno RIA incontournable pour les futures app web ?
Flex, une techno RIA incontournable pour les futures app web ?
 
Cours 1/3 "Architecture Web"
Cours 1/3 "Architecture Web"Cours 1/3 "Architecture Web"
Cours 1/3 "Architecture Web"
 
Css.more.or.less
Css.more.or.lessCss.more.or.less
Css.more.or.less
 
Examen principal- php - correction
Examen principal- php - correctionExamen principal- php - correction
Examen principal- php - correction
 
Meetup angular rshop
Meetup angular rshopMeetup angular rshop
Meetup angular rshop
 
Node.js, le pavé dans la mare
Node.js, le pavé dans la mareNode.js, le pavé dans la mare
Node.js, le pavé dans la mare
 
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et JavascriptCodedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
 
Drupal, les hackers, la sécurité & les (très) grands comptes
Drupal, les hackers, la sécurité & les (très) grands comptesDrupal, les hackers, la sécurité & les (très) grands comptes
Drupal, les hackers, la sécurité & les (très) grands comptes
 

Mehr von BeMyApp

Introduction to epid
Introduction to epidIntroduction to epid
Introduction to epidBeMyApp
 
Introduction ciot workshop premeetup
Introduction ciot workshop premeetupIntroduction ciot workshop premeetup
Introduction ciot workshop premeetupBeMyApp
 
Présentation des APIs cognitives IBM Watson
Présentation des APIs cognitives IBM WatsonPrésentation des APIs cognitives IBM Watson
Présentation des APIs cognitives IBM WatsonBeMyApp
 
Crédit Agricole S.A. Personae et Parcours
Crédit Agricole S.A. Personae et ParcoursCrédit Agricole S.A. Personae et Parcours
Crédit Agricole S.A. Personae et ParcoursBeMyApp
 
Cisco Paris DevNet Hackathon slideshow - Intro
Cisco Paris DevNet Hackathon slideshow - IntroCisco Paris DevNet Hackathon slideshow - Intro
Cisco Paris DevNet Hackathon slideshow - IntroBeMyApp
 
Tumeurs Neuroendocrines : une vue d'ensemble
Tumeurs Neuroendocrines : une vue d'ensembleTumeurs Neuroendocrines : une vue d'ensemble
Tumeurs Neuroendocrines : une vue d'ensembleBeMyApp
 
Building your first game in Unity 3d by Sarah Sexton
Building your first game in Unity 3d  by Sarah SextonBuilding your first game in Unity 3d  by Sarah Sexton
Building your first game in Unity 3d by Sarah SextonBeMyApp
 
Using intel's real sense to create games with natural user interfaces justi...
Using intel's real sense to create games with natural user interfaces   justi...Using intel's real sense to create games with natural user interfaces   justi...
Using intel's real sense to create games with natural user interfaces justi...BeMyApp
 
Introduction to using the R200 camera & Realsense SDK in Unity3d - Jon Collins
Introduction to using the R200 camera & Realsense SDK in Unity3d - Jon CollinsIntroduction to using the R200 camera & Realsense SDK in Unity3d - Jon Collins
Introduction to using the R200 camera & Realsense SDK in Unity3d - Jon CollinsBeMyApp
 
Audio Mixer in Unity5 - Andy Touch
Audio Mixer in Unity5 - Andy TouchAudio Mixer in Unity5 - Andy Touch
Audio Mixer in Unity5 - Andy TouchBeMyApp
 
Shaders - Claudia Doppioslash - Unity With the Best
Shaders - Claudia Doppioslash - Unity With the BestShaders - Claudia Doppioslash - Unity With the Best
Shaders - Claudia Doppioslash - Unity With the BestBeMyApp
 
[HACKATHON CISCO PARIS] Slideshow du workshop Smart City
[HACKATHON CISCO PARIS] Slideshow du workshop Smart City[HACKATHON CISCO PARIS] Slideshow du workshop Smart City
[HACKATHON CISCO PARIS] Slideshow du workshop Smart CityBeMyApp
 
Tools to Save Time
Tools to Save TimeTools to Save Time
Tools to Save TimeBeMyApp
 
[Workshop e résidents] présentation intent, craft ai, dalkia et incubateur
[Workshop e résidents] présentation intent, craft ai, dalkia et incubateur[Workshop e résidents] présentation intent, craft ai, dalkia et incubateur
[Workshop e résidents] présentation intent, craft ai, dalkia et incubateurBeMyApp
 
[Webinar E-résidents #1] Présentation des différents métiers du bâtiment conn...
[Webinar E-résidents #1] Présentation des différents métiers du bâtiment conn...[Webinar E-résidents #1] Présentation des différents métiers du bâtiment conn...
[Webinar E-résidents #1] Présentation des différents métiers du bâtiment conn...BeMyApp
 
[IoT World Forum Webinar] Review of CMX Cisco technology
[IoT World Forum Webinar] Review of CMX Cisco technology[IoT World Forum Webinar] Review of CMX Cisco technology
[IoT World Forum Webinar] Review of CMX Cisco technologyBeMyApp
 
HP Helion Episode 6: Cloud Foundry Summit Recap
HP Helion Episode 6: Cloud Foundry Summit RecapHP Helion Episode 6: Cloud Foundry Summit Recap
HP Helion Episode 6: Cloud Foundry Summit RecapBeMyApp
 
Webinar UI/UX by Francesco Marcellino
Webinar UI/UX by Francesco MarcellinoWebinar UI/UX by Francesco Marcellino
Webinar UI/UX by Francesco MarcellinoBeMyApp
 
HP Helion Webinar #5 - Security Beyond Firewalls
HP Helion Webinar #5 - Security Beyond FirewallsHP Helion Webinar #5 - Security Beyond Firewalls
HP Helion Webinar #5 - Security Beyond FirewallsBeMyApp
 
HP Helion Webinar #4 - Open stack the magic pill
HP Helion Webinar #4 - Open stack the magic pillHP Helion Webinar #4 - Open stack the magic pill
HP Helion Webinar #4 - Open stack the magic pillBeMyApp
 

Mehr von BeMyApp (20)

Introduction to epid
Introduction to epidIntroduction to epid
Introduction to epid
 
Introduction ciot workshop premeetup
Introduction ciot workshop premeetupIntroduction ciot workshop premeetup
Introduction ciot workshop premeetup
 
Présentation des APIs cognitives IBM Watson
Présentation des APIs cognitives IBM WatsonPrésentation des APIs cognitives IBM Watson
Présentation des APIs cognitives IBM Watson
 
Crédit Agricole S.A. Personae et Parcours
Crédit Agricole S.A. Personae et ParcoursCrédit Agricole S.A. Personae et Parcours
Crédit Agricole S.A. Personae et Parcours
 
Cisco Paris DevNet Hackathon slideshow - Intro
Cisco Paris DevNet Hackathon slideshow - IntroCisco Paris DevNet Hackathon slideshow - Intro
Cisco Paris DevNet Hackathon slideshow - Intro
 
Tumeurs Neuroendocrines : une vue d'ensemble
Tumeurs Neuroendocrines : une vue d'ensembleTumeurs Neuroendocrines : une vue d'ensemble
Tumeurs Neuroendocrines : une vue d'ensemble
 
Building your first game in Unity 3d by Sarah Sexton
Building your first game in Unity 3d  by Sarah SextonBuilding your first game in Unity 3d  by Sarah Sexton
Building your first game in Unity 3d by Sarah Sexton
 
Using intel's real sense to create games with natural user interfaces justi...
Using intel's real sense to create games with natural user interfaces   justi...Using intel's real sense to create games with natural user interfaces   justi...
Using intel's real sense to create games with natural user interfaces justi...
 
Introduction to using the R200 camera & Realsense SDK in Unity3d - Jon Collins
Introduction to using the R200 camera & Realsense SDK in Unity3d - Jon CollinsIntroduction to using the R200 camera & Realsense SDK in Unity3d - Jon Collins
Introduction to using the R200 camera & Realsense SDK in Unity3d - Jon Collins
 
Audio Mixer in Unity5 - Andy Touch
Audio Mixer in Unity5 - Andy TouchAudio Mixer in Unity5 - Andy Touch
Audio Mixer in Unity5 - Andy Touch
 
Shaders - Claudia Doppioslash - Unity With the Best
Shaders - Claudia Doppioslash - Unity With the BestShaders - Claudia Doppioslash - Unity With the Best
Shaders - Claudia Doppioslash - Unity With the Best
 
[HACKATHON CISCO PARIS] Slideshow du workshop Smart City
[HACKATHON CISCO PARIS] Slideshow du workshop Smart City[HACKATHON CISCO PARIS] Slideshow du workshop Smart City
[HACKATHON CISCO PARIS] Slideshow du workshop Smart City
 
Tools to Save Time
Tools to Save TimeTools to Save Time
Tools to Save Time
 
[Workshop e résidents] présentation intent, craft ai, dalkia et incubateur
[Workshop e résidents] présentation intent, craft ai, dalkia et incubateur[Workshop e résidents] présentation intent, craft ai, dalkia et incubateur
[Workshop e résidents] présentation intent, craft ai, dalkia et incubateur
 
[Webinar E-résidents #1] Présentation des différents métiers du bâtiment conn...
[Webinar E-résidents #1] Présentation des différents métiers du bâtiment conn...[Webinar E-résidents #1] Présentation des différents métiers du bâtiment conn...
[Webinar E-résidents #1] Présentation des différents métiers du bâtiment conn...
 
[IoT World Forum Webinar] Review of CMX Cisco technology
[IoT World Forum Webinar] Review of CMX Cisco technology[IoT World Forum Webinar] Review of CMX Cisco technology
[IoT World Forum Webinar] Review of CMX Cisco technology
 
HP Helion Episode 6: Cloud Foundry Summit Recap
HP Helion Episode 6: Cloud Foundry Summit RecapHP Helion Episode 6: Cloud Foundry Summit Recap
HP Helion Episode 6: Cloud Foundry Summit Recap
 
Webinar UI/UX by Francesco Marcellino
Webinar UI/UX by Francesco MarcellinoWebinar UI/UX by Francesco Marcellino
Webinar UI/UX by Francesco Marcellino
 
HP Helion Webinar #5 - Security Beyond Firewalls
HP Helion Webinar #5 - Security Beyond FirewallsHP Helion Webinar #5 - Security Beyond Firewalls
HP Helion Webinar #5 - Security Beyond Firewalls
 
HP Helion Webinar #4 - Open stack the magic pill
HP Helion Webinar #4 - Open stack the magic pillHP Helion Webinar #4 - Open stack the magic pill
HP Helion Webinar #4 - Open stack the magic pill
 

Améliorer la réactivité de vos applications Windows 8.1

  • 1. Améliorez la réactivité de vos applications Windows 8.1 5 astuces qui vont tout changer !
  • 2. Présentation Loïc ReboursConsultant .NET - Avanade MVP Client Development @loicrebours www.blog.loicrebours.fr
  • 3. Une application réactive pour une meilleure expérience utilisateur
  • 4. Tip 1 Eviter les dangers d’async/await
  • 5. Eviter les dangers d’async/await UI thread Async method Await Async work Await Await UI thread Async method Async work
  • 6. Tip 1 - Démo
  • 7. Tip 2 Charger les données de façon incrémentale
  • 8. Charger les données de façon incrémentale Inutile d’afficher des milliers d’éléments au chargement d’une page Il faut charger les données quand l’utilisateur en a besoin Le chargement incrémental est moins consommateur de ressources ISupportIncrementalLoadingpublic interface ISupportIncrementalLoading { bool HasMoreItems { get; } IAsyncOperation<LoadMoreItemsResult> LoadMoreItemsAsync(uint count); }
  • 9. Tip 2 - Démo
  • 10. Tip 3 Créer des animations performantes
  • 11. Créer des animations performantes Pour le rendu XAML, il y a 2 threads importants Le thread UI Parsing du XAML Layout de la scène Rendering des éléments Le thread Compositor Compose les animations des éléments visuels Instructions GPU / CPU
  • 12. Créer des animations performantes Il existe deux types d’animation Les animations indépendantes Peuvent être calculées entièrement lors de leur création Gérées par le thread Compositor, utilisent la puissance du GPU Scaling, rotation, translation … Les animations dépendantes Ne peuvent pas être calculées à l’avance. Utilisation intensive du thread UI Changement de taille de police, modification de la largeur ou hauteur d’un élément …
  • 13. Tip 3 - Démo
  • 14. Tip 4 Optimiser le code XAML
  • 15. Optimiser le code XAML Un peu de théorie Au lancement de l’application, tous les fichiers XAML référencés sont parsés Parser du XAML et créer les objets correspondants en mémoire peut être long Les ressources peuvent être placés à plusieurs endroits : - dans une page - dans la classe App - dans un Resource Dictionary Il est important de factoriser les ressources
  • 16. Optimiser le code XAML <Application ...> <!-- BAD CODE DO NOT USE.--> <Application.Resources> <!-- BAD CODE DO NOT USE.--> <SolidColorBrush x:Key="DefaultAppTextColor" Color="#FF3F42CC"/> <!-- BAD CODE DO NOT USE.--> <SolidColorBrush x:Key="HomePageTextColor" Color="#FF3F42CC"/> <!-- BAD CODE DO NOT USE.--> <SolidColorBrush x:Key="SecondPageTextColor" Color="#FF3F42CC"/> <!-- BAD CODE DO NOT USE.--> <SolidColorBrush x:Key="ThirdPageTextColor" Color="#FF3F42CC"/> <!-- BAD CODE DO NOT USE.- -> N’incluez pas de ressources spécifiques à certaines pages dans le Resource Dictionary de l’application
  • 17. Optimiser le code XAML Factorisez les ressources identiques <StackPanel> <!-- BAD CODE DO NOT USE.--> <TextBox> <!-- BAD CODE DO NOT USE.--> <TextBox.Foreground> <!-- BAD CODE DO NOT USE.--> <SolidColorBrush Color="#FF3F42CC"/> <!-- BAD CODE DO NOT USE.-- > </TextBox.Foreground> <!-- BAD CODE DO NOT USE.--> </TextBox> <!-- BAD CODE DO NOT USE.--> <Button Content="Submit"> <!-- BAD CODE DO NOT USE.--> <Button.Foreground> <!-- BAD CODE DO NOT USE.--> <SolidColorBrush Color="#FF3F42CC"/> <!-- BAD CODE DO NOT USE.-- > </Button.Foreground> <!-- BAD CODE DO NOT USE.--> </Button> <!-- BAD CODE DO NOT USE.--> Plutôt que d’écrire …
  • 18. Optimiser le code XAML Factorisez les ressources identiques Ecrivez … <Page ...> <Page.Resources> <SolidColorBrush x:Key="TextColor" Color="#FF3F42CC"/> </Page.Resources> <StackPanel> <TextBox Foreground="{StaticResource TextColor}" /> <Button Content="Submit" Foreground="{StaticResource TextColor}" /> </StackPanel> </Page>
  • 19. Optimiser le code XAML Evitez d’utiliser des éléments non nécessaires. Le rendu sera plus rapide. <Grid> <!-- BAD CODE DO NOT USE.--> <Rectangle Fill="Black"/> <!-- BAD CODE DO NOT USE.--> </Grid> <!-- BAD CODE DO NOT USE.--> <Grid Background="Black" /> Plutôt que d’écrire … Ecrivez …
  • 20. Optimiser le code XAML Evitez les overdraw. Utilisez les subtilités de XAML (CacheMode de Canvas ci- dessous) <Canvas Background="White" CacheMode="BitmapCache"> <Ellipse Height="40" Width="40" Fill="Blue"/> <Ellipse Canvas.Left="21" Height="40" Width="40" Fill="Blue"/> <Ellipse Canvas.Top="13" Canvas.Left="10" Height="40" Width="40" Fill="Blue"/> </Canvas>
  • 21. Tip 4 - Démo
  • 22. Tip 5 Utiliser le cache sans modération
  • 23. Utiliser le cache sans modération Cache des données Ne chargez vos données qu’une fois. Sérialisez et désérialisez-les ensuite. Cache des images Stocker vos images en local. Utilisez le cache HTTP. Cache des pages Utilisez la propriété NavigationCacheMode.
  • 24. Tip 5 - Démo
  • 25. Merci ! A votre dispo  @loicrebours loic.rebours@outlook.com blog.loicrebours.fr
  • 26. C# et XAML sous Windows 8.1 26 Windows 8.1 de A à Z http://bit.ly/ENIW81 Concevez, développez, architecturez, diagnostiquez, testez, monétisez et déployez votre application …. 20 % sur la version numérique avec le code : UXMSLOIC214
  • 27. Journée Windows 8 / UX le 28 mars chez MS France Une après-midi de sessions Coopération développeur / designer Trucs et astuces pour améliorer l’UX de vos applications Design et ergonomie pour le développeur Imaginez de nouvelles expériences pour vos applications de demain Retours d’expérience sur des applications Des conseils pour vos applications et de nombreux cadeaux à gagner ! 27 6 développeurs 8 UX designers

Hinweis der Redaktion

  1. In Slide Show mode, click the arrow to enter the PowerPoint Getting Started Center.