Erfahren Sie neue und spannende Best Practices aus der Welt der WPF und XAML Developer. Lernen Sie u.a. wie man wirklich performant mit modularen Ressource Dictionaries arbeitet und erleben Sie die grenzenlosen Möglichkeiten von Attached Properties. Erfahren Sie den korrekten Umgang mit Icons als Icon Fonts sowie impliziten DataTemplates. WPF bietet für jede Herausforderung bei der Umsetzung eines optimierten UX Designs die passenden Lösungsräume! Aber was ist eigentlich dieses UX Design... ?
Mehr gibt es hier: http://www.davidchristian.de/
1. XAML UI
DEVELOPMENT BEST
PRACTICES 2.0
THOEMMES@DAVIDCHRISTIAN.DE
SENIOR SOFTWARE & UX ENGINEER
DAVID C. THÖMMES
UI DEVELOPMENT & CONSULTING
IT-BERATUNG UND SOFTWAREENTWICKLUNG
2. WPF UI DEVELOPMENT BEST PRACTICES 2.0
Reminder
UX = User Experience
• Beschreibt die Summe aller Erfahrungen die ein Benutzer mit
einem Produkt erlebt
• Werbung, Website, Verpackung, Bedienung …
Usability (Gebrauchstauglichkeit während der Nutzung)
• Effektivität zur Lösung einer Aufgabe
• Effizienz der Handhabung des Systems
• Zufriedenheit der Nutzer einer Software
2
5. WPF UI DEVELOPMENT BEST PRACTICES
Stage 1
• Alte UI Technologie (WinForms, MFC, WinCC … schlimmer …)
• UX Design und Usability finden keinen Beachtung / Nicht Bekannt
• Negative UX, Schlechte Usability, Kein ästhetischer Anspruch
• „Es läuft und wir haben für jede Funktion einen Button!“
5
6. WPF UI DEVELOPMENT BEST PRACTICES 2.0
Stage 2
• Neuere UI Technologie wie WPF oder HTML5
• Kein UX Designer oder UX Engineer involviert (Vielleicht
höchstens ein Mediengestalter)
• Entwickler entdecken Farben, neue Controls etc.
• Negative bis neutrale UX
• Schlechte bis leicht verbesserte Usability (Durch Controls)
• Kein ästhetischer Anspruch
• „Wir haben nun DataGrids mit Filtern und ein Ribbon von
Microsoft!“
6
7.
8. WPF UI DEVELOPMENT BEST PRACTICES 2.0
Stage 3
• Semi bis professionelles UX Design vorhanden
• Nötige Kompetenz in der Rolle des UI Developer fehlt
• Positivere UX und verbesserte Usability auf dem Papier,
Ästhetik gewinnt an Bedeutung
• „Das Konzept ist geil aber zu aufwändig und zu teuer in der
Entwicklung!“
8
10. WPF UI DEVELOPMENT BEST PRACTICES 2.0
Stage 4
• Semi bis professionelles UX Design vorhanden
• Kompetenzen im Bereich UI Development vorhanden
• Positive UX
• Gute bis sehr gute Usability
• Ästhetik und gutes visuelles Design
• „Bedient sich echt geil! Die Benutzer lieben es!“
10
15. WPF UI DEVELOPMENT BEST PRACTICES
Strategie
• Zentrales „Styling Projekt“ für alle relevanten WPF Ressourcen
• Beinhaltet wohldefinierte Struktur aus Resource Dictionaries
• Pflege, Wartbarkeit und Zusammenarbeit vereinfachen
• Vermeidung unnötiger Inkonsistenzen und Redundanzen
15
25. Look and Feel Resource Dictionary
25
WPF UI DEVELOPMENT BEST PRACTICES
Ein Resource Dictionary das alle
Ressourcen beinhaltet
Kann später in App.xaml
eingebunden werden
31. WPF UI DEVELOPMENT BEST PRACTICES 2.0
ResMerger
• Tool zum Mergen von verschiedenen Resource Dictionaries zu
einem großen Resource Dictionary
• App bindet nur noch ein Resource Dictionary ein
• Merge wird in Build Prozess integriert
• Verhindert exponentieller Anstieg des Arbeitsspeicher
• Verhindert Auflösung von verlinkten Resource Dictionaries
• Ladezeiten
• Kann View-Wechsel / Startup Times dramatisch
beschleunigen!
31
35. WPF UI DEVELOPMENT BEST PRACTICES 2.0
Experiment
• Projekt mit mittlerem Styling Projekt
• ca. 10.000 XAML Zeilen
• 12 Demo Views in Showcase (Hülle)
• Keine reale Datenanbindung
35
37. Startup Time MS Startup RAM MB
WPF UI DEVELOPMENT BEST PRACTICES 2.0
ResMeger - Performance
36
38. Startup Time MS Startup RAM MB
Ohne ResMerger ~3600 - 4500 ~115
WPF UI DEVELOPMENT BEST PRACTICES 2.0
ResMeger - Performance
36
39. Startup Time MS Startup RAM MB
Ohne ResMerger ~3600 - 4500 ~115
Res Merger ~500 - 600 ~30
WPF UI DEVELOPMENT BEST PRACTICES 2.0
ResMeger - Performance
36
40. Startup Time MS Startup RAM MB
Ohne ResMerger ~3600 - 4500 ~115
Res Merger ~500 - 600 ~30
WPF UI DEVELOPMENT BEST PRACTICES 2.0
ResMeger - Performance
Steigerung Performance
• Startup Time ca. 85%
• RAM ca. 75%
• Mehr Performance-Indikatoren möglich… ;-)
36
44. WPF UI DEVELOPMENT BEST PRACTICES 2.0
Icon Fonts
• Schriftart nur mit Icons / Glyphs (Einfarbig)
• Einfaches Skalieren der Größe (Vektor)
• Farbe kann ohne Probleme angepasst werden (Trigger)
• Kombination der Icons kinderleicht (Multiple TextBlöcke)
• Extrem einfache Verwendung im Vergleich zu PNGs etc.
• Device unabhängig
• Pflegeleicht!
40
51. WPF UI DEVELOPMENT BEST PRACTICES 2.0
Icon Fonts systematisch verwenden
Idee
• Ein Glyph per Datentyp mit weiteren Informationen kapseln
(FontIcon)
• Schriftfamilie
• Char Code
• …
• Darstellung über implizite DataTemplate
• Verwendung über beliebigen ContentPresenter
47
62. WPF UI DEVELOPMENT BEST PRACTICES 2.0
PNG und XAML Icons
• Auslagern als Resource in Resource Dictionary
• Darstellung über implizite DataTemplate
• PNG
• Image Control mit ImageSource
• XAML Icon
• Rectangle oder Path mit DrawingBrush /
StreamGeometry
• Verwendung über beliebigen ContentPresenter
58
68. WPF UI DEVELOPMENT BEST PRACTICES 2.0
Einführung
• Gleich wie Dependency Properties
• Metadaten und Speicherperformance,
Änderungsbenachrichtigungen, Grundlage für Trigger, Data
Binding, Animationen etc.
• Definition nicht für eine bestimmtes Control sondern global in
einer zentralen Klasse für alle Controls
• Möglichkeit auf einem beliebigen Control zusetzen
• Häufig verwendet bei Layout Panels (Standard WPF)
• Grid.Row, Grid.Column, ...
64
79. ATTACHED PROPERTIES CUSTOM CONTROL ABLEITUNG
FLEXIBILITÄT
Sehr hoch durch anheften
(Immer möglich)
Hoch, wenn Ableitung möglich
Attached Properties vs. Custom Controls
73
KAPITELTITEL
80. ATTACHED PROPERTIES CUSTOM CONTROL ABLEITUNG
FLEXIBILITÄT
Sehr hoch durch anheften
(Immer möglich)
Hoch, wenn Ableitung möglich
FUNKTIONALITÄT Beschränkter (Statisch) Frei in Ableitung
Attached Properties vs. Custom Controls
73
KAPITELTITEL
81. ATTACHED PROPERTIES CUSTOM CONTROL ABLEITUNG
FLEXIBILITÄT
Sehr hoch durch anheften
(Immer möglich)
Hoch, wenn Ableitung möglich
FUNKTIONALITÄT Beschränkter (Statisch) Frei in Ableitung
REDUNDANZ Keine Höher (Icon für Button + CheckBox)
Attached Properties vs. Custom Controls
73
KAPITELTITEL
82. ATTACHED PROPERTIES CUSTOM CONTROL ABLEITUNG
FLEXIBILITÄT
Sehr hoch durch anheften
(Immer möglich)
Hoch, wenn Ableitung möglich
FUNKTIONALITÄT Beschränkter (Statisch) Frei in Ableitung
REDUNDANZ Keine Höher (Icon für Button + CheckBox)
AUFWAND / PFLEGE Geringer (Zentrale Klasse) Aufwändiger (Viele Klassen)
Attached Properties vs. Custom Controls
73
KAPITELTITEL
83. ATTACHED PROPERTIES CUSTOM CONTROL ABLEITUNG
FLEXIBILITÄT
Sehr hoch durch anheften
(Immer möglich)
Hoch, wenn Ableitung möglich
FUNKTIONALITÄT Beschränkter (Statisch) Frei in Ableitung
REDUNDANZ Keine Höher (Icon für Button + CheckBox)
AUFWAND / PFLEGE Geringer (Zentrale Klasse) Aufwändiger (Viele Klassen)
ERWEITERBARKEIT Gut Gut
Attached Properties vs. Custom Controls
73
KAPITELTITEL
84. ATTACHED PROPERTIES CUSTOM CONTROL ABLEITUNG
FLEXIBILITÄT
Sehr hoch durch anheften
(Immer möglich)
Hoch, wenn Ableitung möglich
FUNKTIONALITÄT Beschränkter (Statisch) Frei in Ableitung
REDUNDANZ Keine Höher (Icon für Button + CheckBox)
AUFWAND / PFLEGE Geringer (Zentrale Klasse) Aufwändiger (Viele Klassen)
ERWEITERBARKEIT Gut Gut
VERSTÄNDNIS / WISSEN
Unter Umständen schwieriger
(Extreme Konstrukte)
Einfacherer
Attached Properties vs. Custom Controls
73
KAPITELTITEL
85. ATTACHED PROPERTIES CUSTOM CONTROL ABLEITUNG
FLEXIBILITÄT
Sehr hoch durch anheften
(Immer möglich)
Hoch, wenn Ableitung möglich
FUNKTIONALITÄT Beschränkter (Statisch) Frei in Ableitung
REDUNDANZ Keine Höher (Icon für Button + CheckBox)
AUFWAND / PFLEGE Geringer (Zentrale Klasse) Aufwändiger (Viele Klassen)
ERWEITERBARKEIT Gut Gut
VERSTÄNDNIS / WISSEN
Unter Umständen schwieriger
(Extreme Konstrukte)
Einfacherer
REUSE Gut Gut (Custom Control Library)
Attached Properties vs. Custom Controls
73
KAPITELTITEL
87. WPF UI DEVELOPMENT BEST PRACTICES 2.0
Einführung
• Bietet zahlreiche Actions und Behaviors
• Gut für Lösung kleiner MVVM Probleme!
• Eigene Behaviors / Actions
• Ermöglichen funktionale Erweiterung ohne Ableitung
• Werden an Controls angeheftet
75
99. WPF UI DEVELOPMENT BEST PRACTICES 2.0
Snoop
• Mächtiges Open-Source Spy Util
• Kompletter Visual Tree einer Applikation anschauen
• Properties lesen und setzen
• 2D und 3D Darstellung
• Control Events auswerten
• Sehr nützlich für XAML Debugging
• https://snoopwpf.codeplex.com/
87
117. VIELEN DANK. GRAF-JOHANN-STRAßE 19
66121 SAARBRÜCKEN
GERMANY
WWW.DAVIDCHRISTIAN.DE
T +49 681 688 9528
THOEMMES@DAVIDCHRISTIAN.DE
UI DEVELOPMENT & CONSULTING
IT-BERATUNG UND SOFTWAREENTWICKLUNG
DAVID C. THÖMMES