SlideShare a Scribd company logo
Modern XAML
Development
Matt Lacey
@MRLacey
Plan Of Action
1. Quick history lesson
2. Look at tools
1. Now
2. Coming soon
WinForms
•Binary formats hard to
manage
•Hard to style
(owner-drawn
controls)
•Hard to decouple
presentation from logic
•Hard to compose and
WPF
•Text based formats
•Flexible styling
•MVVM & Binding
•Composition
fundamental
Windows Forms WPF
✔ ✔ ✔ ✔
✔
✔
✔
✔
✔
✔
✔ ✔✔
✔
✔
✔
✔
✔ ✔
✔
✔
✔
✔
+Win7
<Image
Source="cat.png" />
<Ellipse Width="360" Height="360" Margin="218.108,62.5,216.891,0" Fill="Black" />
<Ellipse Width="60" Height="60" Margin="184.346,184.684,550.653,177.815" Fill="Black" />
<Ellipse Width="60" Height="60" Margin="551.145,184.684,183.854,177.815" Fill="Black" />
<Ellipse Width="80" Height="80" Margin="489.673,-0.281,225.326,342.78" Fill="Black" />
<Ellipse Width="80" Height="80" Margin="218.108,-0.281,496.891,342.78" Fill="Black" />
<Rectangle Margin="218.108,48.371,224.892,185.024" Fill="Black" />
<Rectangle Margin="297.21,-10.721,472.86,336.325" Fill="Black"
RenderTransformOrigin="0.5,0.5">
<Rectangle.RenderTransform>
<TransformGroup>
<RotateTransform Angle="-60.283" />
</TransformGroup>
</Rectangle.RenderTransform>
</Rectangle>
<Rectangle Margin="457.217,-2.696,306.225,330.044" Fill="Black"
RenderTransformOrigin="0.5,0.5">
<Rectangle.RenderTransform>
<TransformGroup>
<RotateTransform Angle="60" />
</TransformGroup>
</Rectangle.RenderTransform>
</Rectangle>
<Rectangle Margin="212.313,214.246,550.968,94.789" Fill="Black"
RenderTransformOrigin="0.5,0.5">
<Rectangle.RenderTransform>
<TransformGroup>
<RotateTransform Angle="153.124" />
</TransformGroup>
</Rectangle.RenderTransform>
</Rectangle>
<Rectangle Margin="553.955,210.798,209.326,97.882" Fill="Black"
RenderTransformOrigin="0.5,0.5">
<Rectangle.RenderTransform>
<TransformGroup>
<RotateTransform Angle="207" />
</TransformGroup>
</Rectangle.RenderTransform>
</Rectangle>
<Ellipse Height="290" Margin="247.5,104.626,248.82,27.874" Fill="Gold" />
<Rectangle Height="200" Margin="247.5,79.719,253.168,142.78" Fill="Gold" />
<Rectangle Height="100" Margin="212.955,41.896,450.737,280.603" Fill="Gold"
RenderTransformOrigin="0.5,0.5">
<Rectangle.RenderTransform>
<TransformGroup>
<RotateTransform Angle="30.927" />
</TransformGroup>
</Rectangle.RenderTransform>
</Rectangle>
<Rectangle Height="100" Margin="443.738,44.574,219.954,277.925" Fill="Gold"
RenderTransformOrigin="0.5,0.5">
<Rectangle.RenderTransform>
<Canvas Name="svg34" Width="64" Height="64">
<Canvas.RenderTransform>
<TranslateTransform X="0" Y="0"/>
</Canvas.RenderTransform>
<Canvas.Resources/>
<Path xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Name="path2"
Fill="#FF4C5359">
<Path.Data>
<PathGeometry Figures="m4.5 2.2c-3.5 2.2-3.4 25.5.8 33l26.1-16c-4-7.1-23.6-
19-26.9-17" FillRule="NonZero"/>
</Path.Data>
</Path>
<Path xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Name="path4"
Fill="#FFF7A4A4">
<Path.Data>
<PathGeometry Figures="m9.5 11.3c-1.5.9-2.2 16.2.4 21l16.7-10.2c-2.4-4.6-
15.7-11.6-17.1-10.8" FillRule="NonZero"/>
</Path.Data>
</Path>
<Path xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Name="path6"
Fill="#FF4C5359">
<Path.Data>
<PathGeometry Figures="m59.5 2.2c3.5 2.2 3.4 25.5-.7 33l-26.1-16c3.9-7.1
23.5-19 26.8-17" FillRule="NonZero"/>
</Path.Data>
</Path>
<Path xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Name="path8"
Fill="#FFF7A4A4">
<Path.Data>
<PathGeometry Figures="m54.5 11.3c1.5.9 2.2 16.2-.4 21l-16.8-10.2c2.5-4.6
15.8-11.6 17.2-10.8" FillRule="NonZero"/>
</Path.Data>
</Path>
<Path xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Name="path10"
Fill="#FF4C5359">
<Path.Data>
<PathGeometry Figures="m31.8 13.1c-27.1 0-29.6 19.4-29.6 30.4 0 4.5 13.2 18.5
29.6 18.5 16.4 0 29.6-14 29.6-18.5 0-11-2.5-30.4-29.6-30.4" FillRule="NonZero"/>
</Path.Data>
</Path>
<Path xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Name="path12"
Fill="#FFBFFFAB">
<Path.Data>
<PathGeometry Figures="m24.2 38.7c0 0-3.1 4.8-8.8 3.3-5.7-1.5-6-7.2-6-
7.2s3.1-4.8 8.8-3.3c5.8 1.5 6 7.2 6 7.2" FillRule="NonZero"/>
</Path.Data>
</Path>
<Path xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Name="path14"
Fill="#FF93E67F">
<Path.Data>
<PathGeometry Figures="m23.6 36.2c0 0-2.7 3-6.5 3-4.1 0-6.5-5.9-6.5-5.9s2.7-
3.1 7.6-1.9c4.5 1.2 5.4 4.8 5.4 4.8" FillRule="NonZero"/>
<Grid>
<TextBlock Foreground="LimeGreen" Background="Black" FontFamily="Courier New">
<Run xml:space="preserve">
__
_,-;''';`'-,.
_/', `; `; `
, _..,-'' ' ` ` `
| ;._.,,-' .| |,_ ,, `
| `;' ;' ;, `, ; | ' ' . 
`; __` ,'__ ` , ` ; | ; 
; (6_); (6_) ; | ,  ' | /
;; _,' ,. ` `, ' `-._ | __//_________
,;.=..`_..=.,' -' ,'' _,--''------''''
_pb__,`"=,,,=="',___,,,-----'''----'_'_'_''-;''
-----------------------'''''' ''''' ) /'
``,,,___/__/'_____,
`--,,,--,-,'''
__,,-' /' `
/'_,,--''
| (
`'
</Run>
</TextBlock>
</Grid>
<TextBlock Text="🐈"
/>
<TextBlock
Text="&#x1f408;" />
<controls:AnimatedVisualPlayer>
<lottie:LottieVisualSource
UriSource="ms-appx:///kitten.json"/>
</controls:AnimatedVisualPlayer>
What is
XAML?
CODE!
XAML
is code
XAML is code
like
C# is code
XAML is code
like
VB is code
XAML is code
like
C++ is code
XAML is code
like
F# is code
XAML is code
like
HTML is code
XAML is code
like
CSS is code
XAML is code
like
JS is code
XAML is code
like
C# is code
XAML is code
• Human and machine readable
• Tries to make life easier for developers
• Has some assumptions, restrictions, and constraints
• Highly structured (yet flexible)
• Offers multiple ways of doing things
• Different versions can be used in different places
• Supported by specific tooling
Expectations
C# & XAML
“Opportunities for improvement”
XAML Styler
Creation
Analysis+
Designer extensibility
Design Time Data
<TextBlock
Text="Hello"
d:Text="Hi"
dt:DesignTime.Text="Hej" />
3 ways to bind
Text="{Binding Item}"
Text="{x:Bind Item}"
[assembly:
XamlCompilation(XamlCompilationOptions.Compile)]
Binding Error Window
In app Toolbar & Live Windows
+ =>
+
=>
Compile time XAML Analysis
What did we cover today?
• XAML is not dead
• Microsoft are investing in tooling
• 3rd parties & the community are making improvements
• There’s lots to help you (think C#)
https://www.mrlacey.com/swetugg-
talk
Questions?
What about
Blend?
Questions?
What about
XAML
Standard?
Questions?
Why not just
do it all in C#?

More Related Content

Similar to Modern XAML Development - Matt Lacey

bootstrap.pptx
bootstrap.pptxbootstrap.pptx
bootstrap.pptx
Libin51
 
Class 4 handout two column layout w mobile web design
Class 4 handout two column layout w mobile web designClass 4 handout two column layout w mobile web design
Class 4 handout two column layout w mobile web design
Erin M. Kidwell
 
Zero to Sixty: AWS Elastic Beanstalk (DMG204) | AWS re:Invent 2013
Zero to Sixty: AWS Elastic Beanstalk (DMG204) | AWS re:Invent 2013Zero to Sixty: AWS Elastic Beanstalk (DMG204) | AWS re:Invent 2013
Zero to Sixty: AWS Elastic Beanstalk (DMG204) | AWS re:Invent 2013
Amazon Web Services
 
Bootstrap 3 training
Bootstrap 3 trainingBootstrap 3 training
Bootstrap 3 training
Vison Sunon
 
Rapid Prototyping
Rapid PrototypingRapid Prototyping
Rapid Prototyping
Even Wu
 
Interactive Visualization With Bokeh (SF Python Meetup)
Interactive Visualization With Bokeh (SF Python Meetup)Interactive Visualization With Bokeh (SF Python Meetup)
Interactive Visualization With Bokeh (SF Python Meetup)
Peter Wang
 
Rocky Mountain URISA Talk (June 2008)
Rocky Mountain URISA Talk (June 2008)Rocky Mountain URISA Talk (June 2008)
Rocky Mountain URISA Talk (June 2008)
Dave Bouwman
 
Basic HTML CSS Slides
Basic HTML CSS Slides Basic HTML CSS Slides
Basic HTML CSS Slides
Allyson Wehrs
 
Copy & Pest - A case-study on the clipboard, blind trust and invisible cross-...
Copy & Pest - A case-study on the clipboard, blind trust and invisible cross-...Copy & Pest - A case-study on the clipboard, blind trust and invisible cross-...
Copy & Pest - A case-study on the clipboard, blind trust and invisible cross-...
Mario Heiderich
 
Gotta code them all, a Pokémon and HTML5 love story!
Gotta code them all, a Pokémon and HTML5 love story!Gotta code them all, a Pokémon and HTML5 love story!
Gotta code them all, a Pokémon and HTML5 love story!
Home
 
Jslunch6
Jslunch6Jslunch6
Jslunch6
Nao Haida
 
Reification
ReificationReification
Reification
Shunsaku Kudo
 
More Secrets of JavaScript Libraries
More Secrets of JavaScript LibrariesMore Secrets of JavaScript Libraries
More Secrets of JavaScript Libraries
jeresig
 
2 Roads to Redemption - Thoughts on XSS and SQLIA
2 Roads to Redemption - Thoughts on XSS and SQLIA2 Roads to Redemption - Thoughts on XSS and SQLIA
2 Roads to Redemption - Thoughts on XSS and SQLIA
guestfdcb8a
 
Scala / Technology evolution
Scala  / Technology evolutionScala  / Technology evolution
Scala / Technology evolution
Ruslan Shevchenko
 
NodeConf OneShot Budapest — Production Ready Node.js by Nuno Job
NodeConf OneShot Budapest — Production Ready Node.js by Nuno JobNodeConf OneShot Budapest — Production Ready Node.js by Nuno Job
NodeConf OneShot Budapest — Production Ready Node.js by Nuno Job
Nuno Job
 
Dev Day 2019: Phillip Krenn – Aggregierte Logging Patterns
Dev Day 2019: Phillip Krenn – Aggregierte Logging PatternsDev Day 2019: Phillip Krenn – Aggregierte Logging Patterns
Dev Day 2019: Phillip Krenn – Aggregierte Logging Patterns
DevDay Dresden
 
Satchmo
SatchmoSatchmo
Satchmo
DjangoCon2008
 
Html5 intro
Html5 introHtml5 intro
Html5 intro
Wilfred Nas
 
Creating Art with Codes - CSS3
Creating Art with Codes - CSS3Creating Art with Codes - CSS3
Creating Art with Codes - CSS3
Sayanee Basu
 

Similar to Modern XAML Development - Matt Lacey (20)

bootstrap.pptx
bootstrap.pptxbootstrap.pptx
bootstrap.pptx
 
Class 4 handout two column layout w mobile web design
Class 4 handout two column layout w mobile web designClass 4 handout two column layout w mobile web design
Class 4 handout two column layout w mobile web design
 
Zero to Sixty: AWS Elastic Beanstalk (DMG204) | AWS re:Invent 2013
Zero to Sixty: AWS Elastic Beanstalk (DMG204) | AWS re:Invent 2013Zero to Sixty: AWS Elastic Beanstalk (DMG204) | AWS re:Invent 2013
Zero to Sixty: AWS Elastic Beanstalk (DMG204) | AWS re:Invent 2013
 
Bootstrap 3 training
Bootstrap 3 trainingBootstrap 3 training
Bootstrap 3 training
 
Rapid Prototyping
Rapid PrototypingRapid Prototyping
Rapid Prototyping
 
Interactive Visualization With Bokeh (SF Python Meetup)
Interactive Visualization With Bokeh (SF Python Meetup)Interactive Visualization With Bokeh (SF Python Meetup)
Interactive Visualization With Bokeh (SF Python Meetup)
 
Rocky Mountain URISA Talk (June 2008)
Rocky Mountain URISA Talk (June 2008)Rocky Mountain URISA Talk (June 2008)
Rocky Mountain URISA Talk (June 2008)
 
Basic HTML CSS Slides
Basic HTML CSS Slides Basic HTML CSS Slides
Basic HTML CSS Slides
 
Copy & Pest - A case-study on the clipboard, blind trust and invisible cross-...
Copy & Pest - A case-study on the clipboard, blind trust and invisible cross-...Copy & Pest - A case-study on the clipboard, blind trust and invisible cross-...
Copy & Pest - A case-study on the clipboard, blind trust and invisible cross-...
 
Gotta code them all, a Pokémon and HTML5 love story!
Gotta code them all, a Pokémon and HTML5 love story!Gotta code them all, a Pokémon and HTML5 love story!
Gotta code them all, a Pokémon and HTML5 love story!
 
Jslunch6
Jslunch6Jslunch6
Jslunch6
 
Reification
ReificationReification
Reification
 
More Secrets of JavaScript Libraries
More Secrets of JavaScript LibrariesMore Secrets of JavaScript Libraries
More Secrets of JavaScript Libraries
 
2 Roads to Redemption - Thoughts on XSS and SQLIA
2 Roads to Redemption - Thoughts on XSS and SQLIA2 Roads to Redemption - Thoughts on XSS and SQLIA
2 Roads to Redemption - Thoughts on XSS and SQLIA
 
Scala / Technology evolution
Scala  / Technology evolutionScala  / Technology evolution
Scala / Technology evolution
 
NodeConf OneShot Budapest — Production Ready Node.js by Nuno Job
NodeConf OneShot Budapest — Production Ready Node.js by Nuno JobNodeConf OneShot Budapest — Production Ready Node.js by Nuno Job
NodeConf OneShot Budapest — Production Ready Node.js by Nuno Job
 
Dev Day 2019: Phillip Krenn – Aggregierte Logging Patterns
Dev Day 2019: Phillip Krenn – Aggregierte Logging PatternsDev Day 2019: Phillip Krenn – Aggregierte Logging Patterns
Dev Day 2019: Phillip Krenn – Aggregierte Logging Patterns
 
Satchmo
SatchmoSatchmo
Satchmo
 
Html5 intro
Html5 introHtml5 intro
Html5 intro
 
Creating Art with Codes - CSS3
Creating Art with Codes - CSS3Creating Art with Codes - CSS3
Creating Art with Codes - CSS3
 

More from Matt Lacey

"Write Once, Run Everywhere" & Windows 10
"Write Once, Run Everywhere" & Windows 10"Write Once, Run Everywhere" & Windows 10
"Write Once, Run Everywhere" & Windows 10
Matt Lacey
 
Is your mobile app as secure as you think?
Is your mobile app as secure as you think?Is your mobile app as secure as you think?
Is your mobile app as secure as you think?
Matt Lacey
 
A look behind the scenes: Windows 8 background processing
A look behind the scenes: Windows 8 background processingA look behind the scenes: Windows 8 background processing
A look behind the scenes: Windows 8 background processing
Matt Lacey
 
Intro to the App Developers Alliance @ WPUG
Intro to the App Developers Alliance @ WPUGIntro to the App Developers Alliance @ WPUG
Intro to the App Developers Alliance @ WPUG
Matt Lacey
 
Wpug vserv developer deck- march 2014 global
Wpug  vserv developer deck- march 2014 globalWpug  vserv developer deck- march 2014 global
Wpug vserv developer deck- march 2014 global
Matt Lacey
 
Pricing mobile apps
Pricing mobile appsPricing mobile apps
Pricing mobile apps
Matt Lacey
 
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 810 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
Matt Lacey
 
Preparing for WP8
Preparing for WP8Preparing for WP8
Preparing for WP8
Matt Lacey
 
Thinking mobile and beyond (Dundee)
Thinking mobile and beyond (Dundee)Thinking mobile and beyond (Dundee)
Thinking mobile and beyond (Dundee)
Matt Lacey
 
Awesome Windows Phone Development (Aberdeen)
Awesome Windows Phone Development (Aberdeen)Awesome Windows Phone Development (Aberdeen)
Awesome Windows Phone Development (Aberdeen)
Matt Lacey
 
WPSDK 7.1.1
WPSDK 7.1.1WPSDK 7.1.1
WPSDK 7.1.1
Matt Lacey
 
Deep linking and secondary tiles
Deep linking and secondary tilesDeep linking and secondary tiles
Deep linking and secondary tiles
Matt Lacey
 
PhoneGap @ LDNUG
PhoneGap @ LDNUGPhoneGap @ LDNUG
PhoneGap @ LDNUG
Matt Lacey
 
Introducing Windows Phone 7 Development
Introducing Windows Phone 7 DevelopmentIntroducing Windows Phone 7 Development
Introducing Windows Phone 7 Development
Matt Lacey
 
WP7Dev with HTML & JavaScript
WP7Dev with HTML & JavaScriptWP7Dev with HTML & JavaScript
WP7Dev with HTML & JavaScript
Matt Lacey
 
Xna for wp7
Xna for wp7Xna for wp7
Xna for wp7
Matt Lacey
 
Why care about mobile? And what is Windows Phone 7?
Why care about mobile? And what is Windows Phone 7?Why care about mobile? And what is Windows Phone 7?
Why care about mobile? And what is Windows Phone 7?
Matt Lacey
 
Developing for Windows7 with the APICodepack
Developing for Windows7 with the APICodepackDeveloping for Windows7 with the APICodepack
Developing for Windows7 with the APICodepack
Matt Lacey
 
Mobile Web 2.0 & MDBF (DDDSW - Grok Talk)
Mobile Web 2.0 & MDBF (DDDSW - Grok Talk)Mobile Web 2.0 & MDBF (DDDSW - Grok Talk)
Mobile Web 2.0 & MDBF (DDDSW - Grok Talk)
Matt Lacey
 
Mobile Web 2.0 (DDD Scotland - Grok Talk)
Mobile Web 2.0 (DDD Scotland - Grok Talk)Mobile Web 2.0 (DDD Scotland - Grok Talk)
Mobile Web 2.0 (DDD Scotland - Grok Talk)
Matt Lacey
 

More from Matt Lacey (20)

"Write Once, Run Everywhere" & Windows 10
"Write Once, Run Everywhere" & Windows 10"Write Once, Run Everywhere" & Windows 10
"Write Once, Run Everywhere" & Windows 10
 
Is your mobile app as secure as you think?
Is your mobile app as secure as you think?Is your mobile app as secure as you think?
Is your mobile app as secure as you think?
 
A look behind the scenes: Windows 8 background processing
A look behind the scenes: Windows 8 background processingA look behind the scenes: Windows 8 background processing
A look behind the scenes: Windows 8 background processing
 
Intro to the App Developers Alliance @ WPUG
Intro to the App Developers Alliance @ WPUGIntro to the App Developers Alliance @ WPUG
Intro to the App Developers Alliance @ WPUG
 
Wpug vserv developer deck- march 2014 global
Wpug  vserv developer deck- march 2014 globalWpug  vserv developer deck- march 2014 global
Wpug vserv developer deck- march 2014 global
 
Pricing mobile apps
Pricing mobile appsPricing mobile apps
Pricing mobile apps
 
10 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 810 tips for porting to Windows Phone 8
10 tips for porting to Windows Phone 8
 
Preparing for WP8
Preparing for WP8Preparing for WP8
Preparing for WP8
 
Thinking mobile and beyond (Dundee)
Thinking mobile and beyond (Dundee)Thinking mobile and beyond (Dundee)
Thinking mobile and beyond (Dundee)
 
Awesome Windows Phone Development (Aberdeen)
Awesome Windows Phone Development (Aberdeen)Awesome Windows Phone Development (Aberdeen)
Awesome Windows Phone Development (Aberdeen)
 
WPSDK 7.1.1
WPSDK 7.1.1WPSDK 7.1.1
WPSDK 7.1.1
 
Deep linking and secondary tiles
Deep linking and secondary tilesDeep linking and secondary tiles
Deep linking and secondary tiles
 
PhoneGap @ LDNUG
PhoneGap @ LDNUGPhoneGap @ LDNUG
PhoneGap @ LDNUG
 
Introducing Windows Phone 7 Development
Introducing Windows Phone 7 DevelopmentIntroducing Windows Phone 7 Development
Introducing Windows Phone 7 Development
 
WP7Dev with HTML & JavaScript
WP7Dev with HTML & JavaScriptWP7Dev with HTML & JavaScript
WP7Dev with HTML & JavaScript
 
Xna for wp7
Xna for wp7Xna for wp7
Xna for wp7
 
Why care about mobile? And what is Windows Phone 7?
Why care about mobile? And what is Windows Phone 7?Why care about mobile? And what is Windows Phone 7?
Why care about mobile? And what is Windows Phone 7?
 
Developing for Windows7 with the APICodepack
Developing for Windows7 with the APICodepackDeveloping for Windows7 with the APICodepack
Developing for Windows7 with the APICodepack
 
Mobile Web 2.0 & MDBF (DDDSW - Grok Talk)
Mobile Web 2.0 & MDBF (DDDSW - Grok Talk)Mobile Web 2.0 & MDBF (DDDSW - Grok Talk)
Mobile Web 2.0 & MDBF (DDDSW - Grok Talk)
 
Mobile Web 2.0 (DDD Scotland - Grok Talk)
Mobile Web 2.0 (DDD Scotland - Grok Talk)Mobile Web 2.0 (DDD Scotland - Grok Talk)
Mobile Web 2.0 (DDD Scotland - Grok Talk)
 

Recently uploaded

Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
Trusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process MiningTrusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process Mining
LucaBarbaro3
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
Tatiana Kojar
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
Hiroshi SHIBATA
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
Chart Kalyan
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
Pixlogix Infotech
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - HiikeSystem Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
Hiike
 
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStrDeep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
saastr
 
Operating System Used by Users in day-to-day life.pptx
Operating System Used by Users in day-to-day life.pptxOperating System Used by Users in day-to-day life.pptx
Operating System Used by Users in day-to-day life.pptx
Pravash Chandra Das
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
DanBrown980551
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Jeffrey Haguewood
 
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Jeffrey Haguewood
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
tolgahangng
 
Digital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying AheadDigital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying Ahead
Wask
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
kumardaparthi1024
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
akankshawande
 

Recently uploaded (20)

Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
Trusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process MiningTrusted Execution Environment for Decentralized Process Mining
Trusted Execution Environment for Decentralized Process Mining
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - HiikeSystem Design Case Study: Building a Scalable E-Commerce Platform - Hiike
System Design Case Study: Building a Scalable E-Commerce Platform - Hiike
 
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStrDeep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
 
Operating System Used by Users in day-to-day life.pptx
Operating System Used by Users in day-to-day life.pptxOperating System Used by Users in day-to-day life.pptx
Operating System Used by Users in day-to-day life.pptx
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
Salesforce Integration for Bonterra Impact Management (fka Social Solutions A...
 
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
 
Digital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying AheadDigital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying Ahead
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
 

Modern XAML Development - Matt Lacey

  • 2. Plan Of Action 1. Quick history lesson 2. Look at tools 1. Now 2. Coming soon
  • 3. WinForms •Binary formats hard to manage •Hard to style (owner-drawn controls) •Hard to decouple presentation from logic •Hard to compose and WPF •Text based formats •Flexible styling •MVVM & Binding •Composition fundamental
  • 4. Windows Forms WPF ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ ✔ +Win7
  • 6. <Ellipse Width="360" Height="360" Margin="218.108,62.5,216.891,0" Fill="Black" /> <Ellipse Width="60" Height="60" Margin="184.346,184.684,550.653,177.815" Fill="Black" /> <Ellipse Width="60" Height="60" Margin="551.145,184.684,183.854,177.815" Fill="Black" /> <Ellipse Width="80" Height="80" Margin="489.673,-0.281,225.326,342.78" Fill="Black" /> <Ellipse Width="80" Height="80" Margin="218.108,-0.281,496.891,342.78" Fill="Black" /> <Rectangle Margin="218.108,48.371,224.892,185.024" Fill="Black" /> <Rectangle Margin="297.21,-10.721,472.86,336.325" Fill="Black" RenderTransformOrigin="0.5,0.5"> <Rectangle.RenderTransform> <TransformGroup> <RotateTransform Angle="-60.283" /> </TransformGroup> </Rectangle.RenderTransform> </Rectangle> <Rectangle Margin="457.217,-2.696,306.225,330.044" Fill="Black" RenderTransformOrigin="0.5,0.5"> <Rectangle.RenderTransform> <TransformGroup> <RotateTransform Angle="60" /> </TransformGroup> </Rectangle.RenderTransform> </Rectangle> <Rectangle Margin="212.313,214.246,550.968,94.789" Fill="Black" RenderTransformOrigin="0.5,0.5"> <Rectangle.RenderTransform> <TransformGroup> <RotateTransform Angle="153.124" /> </TransformGroup> </Rectangle.RenderTransform> </Rectangle> <Rectangle Margin="553.955,210.798,209.326,97.882" Fill="Black" RenderTransformOrigin="0.5,0.5"> <Rectangle.RenderTransform> <TransformGroup> <RotateTransform Angle="207" /> </TransformGroup> </Rectangle.RenderTransform> </Rectangle> <Ellipse Height="290" Margin="247.5,104.626,248.82,27.874" Fill="Gold" /> <Rectangle Height="200" Margin="247.5,79.719,253.168,142.78" Fill="Gold" /> <Rectangle Height="100" Margin="212.955,41.896,450.737,280.603" Fill="Gold" RenderTransformOrigin="0.5,0.5"> <Rectangle.RenderTransform> <TransformGroup> <RotateTransform Angle="30.927" /> </TransformGroup> </Rectangle.RenderTransform> </Rectangle> <Rectangle Height="100" Margin="443.738,44.574,219.954,277.925" Fill="Gold" RenderTransformOrigin="0.5,0.5"> <Rectangle.RenderTransform>
  • 7. <Canvas Name="svg34" Width="64" Height="64"> <Canvas.RenderTransform> <TranslateTransform X="0" Y="0"/> </Canvas.RenderTransform> <Canvas.Resources/> <Path xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Name="path2" Fill="#FF4C5359"> <Path.Data> <PathGeometry Figures="m4.5 2.2c-3.5 2.2-3.4 25.5.8 33l26.1-16c-4-7.1-23.6- 19-26.9-17" FillRule="NonZero"/> </Path.Data> </Path> <Path xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Name="path4" Fill="#FFF7A4A4"> <Path.Data> <PathGeometry Figures="m9.5 11.3c-1.5.9-2.2 16.2.4 21l16.7-10.2c-2.4-4.6- 15.7-11.6-17.1-10.8" FillRule="NonZero"/> </Path.Data> </Path> <Path xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Name="path6" Fill="#FF4C5359"> <Path.Data> <PathGeometry Figures="m59.5 2.2c3.5 2.2 3.4 25.5-.7 33l-26.1-16c3.9-7.1 23.5-19 26.8-17" FillRule="NonZero"/> </Path.Data> </Path> <Path xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Name="path8" Fill="#FFF7A4A4"> <Path.Data> <PathGeometry Figures="m54.5 11.3c1.5.9 2.2 16.2-.4 21l-16.8-10.2c2.5-4.6 15.8-11.6 17.2-10.8" FillRule="NonZero"/> </Path.Data> </Path> <Path xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Name="path10" Fill="#FF4C5359"> <Path.Data> <PathGeometry Figures="m31.8 13.1c-27.1 0-29.6 19.4-29.6 30.4 0 4.5 13.2 18.5 29.6 18.5 16.4 0 29.6-14 29.6-18.5 0-11-2.5-30.4-29.6-30.4" FillRule="NonZero"/> </Path.Data> </Path> <Path xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Name="path12" Fill="#FFBFFFAB"> <Path.Data> <PathGeometry Figures="m24.2 38.7c0 0-3.1 4.8-8.8 3.3-5.7-1.5-6-7.2-6- 7.2s3.1-4.8 8.8-3.3c5.8 1.5 6 7.2 6 7.2" FillRule="NonZero"/> </Path.Data> </Path> <Path xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Name="path14" Fill="#FF93E67F"> <Path.Data> <PathGeometry Figures="m23.6 36.2c0 0-2.7 3-6.5 3-4.1 0-6.5-5.9-6.5-5.9s2.7- 3.1 7.6-1.9c4.5 1.2 5.4 4.8 5.4 4.8" FillRule="NonZero"/>
  • 8. <Grid> <TextBlock Foreground="LimeGreen" Background="Black" FontFamily="Courier New"> <Run xml:space="preserve"> __ _,-;''';`'-,. _/', `; `; ` , _..,-'' ' ` ` ` | ;._.,,-' .| |,_ ,, ` | `;' ;' ;, `, ; | ' ' . `; __` ,'__ ` , ` ; | ; ; (6_); (6_) ; | , ' | / ;; _,' ,. ` `, ' `-._ | __//_________ ,;.=..`_..=.,' -' ,'' _,--''------'''' _pb__,`"=,,,=="',___,,,-----'''----'_'_'_''-;'' -----------------------'''''' ''''' ) /' ``,,,___/__/'_____, `--,,,--,-,''' __,,-' /' ` /'_,,--'' | ( `' </Run> </TextBlock> </Grid>
  • 12. CODE!
  • 22. XAML is code • Human and machine readable • Tries to make life easier for developers • Has some assumptions, restrictions, and constraints • Highly structured (yet flexible) • Offers multiple ways of doing things • Different versions can be used in different places • Supported by specific tooling
  • 25.
  • 26.
  • 27.
  • 29.
  • 31.
  • 35. 3 ways to bind Text="{Binding Item}" Text="{x:Bind Item}" [assembly: XamlCompilation(XamlCompilationOptions.Compile)]
  • 37. In app Toolbar & Live Windows
  • 38.
  • 40. Compile time XAML Analysis
  • 41.
  • 42.
  • 43. What did we cover today? • XAML is not dead • Microsoft are investing in tooling • 3rd parties & the community are making improvements • There’s lots to help you (think C#)
  • 47. Questions? Why not just do it all in C#?

Editor's Notes

  1. At its core, it's a textual representation of something that is compiled into the application
  2. Actually, let's take a step back. What do you expect a C# code file to look like?
  3. "C:\Users\matt\Documents\GitHub\Random XAML Files\_Classic.xaml"
  4. & Hot Restart