SlideShare ist ein Scribd-Unternehmen logo
1 von 47
Downloaden Sie, um offline zu lesen
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”
Modern XAML Development - Matt Lacey
Modern XAML Development - Matt Lacey
Modern XAML Development - Matt Lacey
XAML Styler
Modern XAML Development - Matt Lacey
Creation
Modern XAML Development - Matt Lacey
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
Modern XAML Development - Matt Lacey
+ =>
+
=>
Compile time XAML Analysis
Modern XAML Development - Matt Lacey
Modern XAML Development - Matt Lacey
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#?

Weitere ähnliche Inhalte

Ähnlich wie Modern XAML Development - Matt Lacey

bootstrap.pptx
bootstrap.pptxbootstrap.pptx
bootstrap.pptxLibin51
 
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 designErin 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 2013Amazon Web Services
 
Bootstrap 3 training
Bootstrap 3 trainingBootstrap 3 training
Bootstrap 3 trainingVison Sunon
 
Rapid Prototyping
Rapid PrototypingRapid Prototyping
Rapid PrototypingEven 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
 
More Secrets of JavaScript Libraries
More Secrets of JavaScript LibrariesMore Secrets of JavaScript Libraries
More Secrets of JavaScript Librariesjeresig
 
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 SQLIAguestfdcb8a
 
Scala / Technology evolution
Scala  / Technology evolutionScala  / Technology evolution
Scala / Technology evolutionRuslan 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 JobNuno 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 PatternsDevDay Dresden
 
Creating Art with Codes - CSS3
Creating Art with Codes - CSS3Creating Art with Codes - CSS3
Creating Art with Codes - CSS3Sayanee Basu
 

Ähnlich wie 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
 

Mehr von 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 10Matt 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 processingMatt 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 @ WPUGMatt 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 globalMatt Lacey
 
Pricing mobile apps
Pricing mobile appsPricing mobile apps
Pricing mobile appsMatt 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 8Matt Lacey
 
Preparing for WP8
Preparing for WP8Preparing for WP8
Preparing for WP8Matt 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
 
Deep linking and secondary tiles
Deep linking and secondary tilesDeep linking and secondary tiles
Deep linking and secondary tilesMatt Lacey
 
PhoneGap @ LDNUG
PhoneGap @ LDNUGPhoneGap @ LDNUG
PhoneGap @ LDNUGMatt Lacey
 
Introducing Windows Phone 7 Development
Introducing Windows Phone 7 DevelopmentIntroducing Windows Phone 7 Development
Introducing Windows Phone 7 DevelopmentMatt Lacey
 
WP7Dev with HTML & JavaScript
WP7Dev with HTML & JavaScriptWP7Dev with HTML & JavaScript
WP7Dev with HTML & JavaScriptMatt 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 APICodepackMatt 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
 

Mehr von 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)
 

Kürzlich hochgeladen

Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAshyamraj55
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfAijun Zhang
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesMd Hossain Ali
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1DianaGray10
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.YounusS2
 
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDELiveplex
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...Aggregage
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Will Schroeder
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8DianaGray10
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-pyJamie (Taka) Wang
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXTarek Kalaji
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxUdaiappa Ramachandran
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024D Cloud Solutions
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintMahmoud Rabie
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsSeth Reyes
 
Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024SkyPlanner
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesDavid Newbury
 

Kürzlich hochgeladen (20)

Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
 
201610817 - edge part1
201610817 - edge part1201610817 - edge part1
201610817 - edge part1
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdf
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.
 
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
 
20150722 - AGV
20150722 - AGV20150722 - AGV
20150722 - AGV
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
 
20230104 - machine vision
20230104 - machine vision20230104 - machine vision
20230104 - machine vision
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-py
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBX
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptx
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership Blueprint
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and Hazards
 
Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond Ontologies
 

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
  • 35. 3 ways to bind Text="{Binding Item}" Text="{x:Bind Item}" [assembly: XamlCompilation(XamlCompilationOptions.Compile)]
  • 37. In app Toolbar & Live Windows
  • 40. Compile time XAML Analysis
  • 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#?

Hinweis der Redaktion

  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