SlideShare a Scribd company logo
UniversalApps Development
Part 1/3
Jiri Danihelka
What is a universal app?
• You can build an app that targets
Windows and Windows Phone
• It is not (currently):
– A single binary
– A non-Windows binary (Xamarin) application
• Targeting iOS
• Targeting Android
– An HTML/JavaScript (Cordova) application
What does it mean to be universal?
The consumer promise
• Similar theme
• Common experience
• Shared authentication
• Shared data/profile
• Single app purchase
• Single IAP purchase
Tailoring the experience
What does it mean to be universal?
The Windows Store perspective
• Shared package full name
• Single app purchase
• Single IAP purchase
• Roaming data
• Shared notification channel
What does it mean to be universal?
The Visual Studio perspective
• Shared project-type
– A new feature or bug in one
project, everything is updated
• Still possible to tailor
• Reusing code is meaningful
because of unified APIs
Solution 'App1'
App1_Phone81
App1_Windows81
Class1.cs
Page1.xaml
Asset1.png
Class1.cs
Page1.xaml
Asset1.png
App.xaml
App.xaml
Solution 'App1'
App1_Phone81
App1_Windows81
MyData.cs
MyData.cs
MyWebservice
MyData.cs
Linked files
for sharing source code
Solution 'App1'
App1_Phone81
App1_Windows81
Class1.cs
Page1.xaml
Asset1.png
References
App1_Shared
References
App1_Shared
App1_Shared
App.xaml
Shared Projects
for sharing source code
Solution 'App1'
App1_Phone81
App1_Windows81
Class1.cs
Page1.xaml
Asset1.png
References
App1_PCL
References
App1_PCL
App1_PCL
App.xaml
App.xaml
.NET PCLs
for sharing binaries
Types of sharing
Linked files
in a super-crazy way
Solution 'App1'
App1_Phone81
App1_Windows81
Class1.cs
Page1.xaml
Asset1.png
Class1.cs
Page1.xaml
Asset1.png
App.xaml
App.xaml
Solution 'App1'
App1_Phone81
App1_Windows81
MyData.cs
MyData.cs
MyWebservice
MyData.cs
Linked files
for sharing source code
Solution 'App1'
App1_Phone81
App1_Windows81
Class1.cs
Page1.xaml
Asset1.png
References
App1_Shared
References
App1_Shared
App1_Shared
App.xaml
Shared Projects
for sharing source code
Solution 'App1'
App1_Phone81
App1_Windows81
Class1.cs
Page1.xaml
Asset1.png
References
App1_PCL
References
App1_PCL
App1_PCL
App.xaml
App.xaml
.NET PCLs
for sharing binaries
Types of sharing
Linked files
in a super-crazy way
Consider…
• Linked files
– It’s all manual
• Shared projects
– Basically MSBuild
• Portable class libraries
– Lowest common denominator
Rules of thumb
• Compilation directives
– Can make code difficult to read
– Solves small, quick-hit platform problems
• Partial classes
– Makes it easy to isolate platform code
– Difficult to see the entirety of your code
• Base classes
– Familiar concept to most programmers
– Partial and abstract methods are options
Three XAML strategies
Solution 'App1'
App1_Phone81
App1_Windows81
LoginPage.xaml
References
App1_Shared
References
App1_Shared
App1_Shared
Solving styles
Faking themes 
Adaptive nirvana
Most reuse, least likely
Solution 'App1'
App1_Phone81
App1_Windows81
References
App1_Shared
References
App1_Shared
MainPage.xaml
MainPage.xaml
Device-specific
Least friction, most likely
LoginPage.xaml
App1_Shared
MainPage.xaml
Solution 'App1'
App1_Phone81
App1_Windows81
LoginPage.xaml
References
App1_Shared
References
App1_Shared
App1_Shared
MainPage.xaml
Dictionary.xaml
Dictionary.xaml
Strategies to manage platform-specific visibility
Reality check
• Don’t expect to save time writing XAML
• Do expect to save time writing implementation code
Module recap
• Code sharing strategies
• Platform-specific code
• Sharing XAML
Module Agenda
• Platform capabilities
• Device variability
• Design considerations
Windows
• Print contract
• New window
• Search Box
• App Bar
Phone
• Call dialog
• Back button
• Status Bar
• Pivot control
Platform-specific capabilities
Accessibility
• UI automation
– Accessibility checker
• Assistive technologies
– On screen keyboard, only Keyboard
– Voice recognition, varying input
– Screen readers, varying output
• Theme Resources
– High contrast
– Variable Fonts
• Media captioning
• Customizing controls
– Automation peers (IValueProvider)
– Accessibility names / Label(Name) / View(Raw) / LiveRegion
What if the user…?
The emulator is sufficient
for flow verification.
Follow standard
approaches with controls
What if the device is…?
40”
30”
24”
18”
14”
10”
8”
6”
4”
The emulator is insufficient
for asset verification.
Avoid adding additional
scaling to your own assets.
Don’t overthink it. If it
looks good, you’re done.
It’s up to you to set the
expected size of assets.
UWP apps development - Part 1
UWP apps development - Part 1
Designing with a common visual vocabulary
TT
Which design assets to share
Windows
• Assets
• Scaled Images
• Dictionaries
• Templates.xaml
• FontSizes.xaml
• Controls.xaml
• Platform.xaml
• Views
• Main.xaml
• Detail.xaml
• Settings.xaml
Phone
• Assets
• Scaled Images
• Dictionaries
• Templates.xaml
• FontSizes.xaml
• Controls.xaml
• Platform.xaml
• Views
• Main.xaml
• Detail.xaml
• Settings.xaml
Shared
• Images
• Simple Images
• Dictionaries
• Brushes.xaml
• FontFamilies.xaml
• Views
• Login.xaml
• WidePage.xaml
• NarrowPage.xaml

More Related Content

PPTX
Maturity of Mobile Test Automation: Approaches and Future Trends- Impetus Web...
PPTX
Universal Apps Oct 2014
PDF
Building Mobile Cross-Platform Apps for iOS, Android & Windows in C# with Xam...
PPTX
Windows Universal Apps
PPTX
Develop business apps cross-platform development using visual studio with x...
PPTX
Why is xamarin the preferred app development platform among app developers
PPTX
Xamarin介紹
PDF
Mobile Cross-Platform App Development in C# with Xamarin
Maturity of Mobile Test Automation: Approaches and Future Trends- Impetus Web...
Universal Apps Oct 2014
Building Mobile Cross-Platform Apps for iOS, Android & Windows in C# with Xam...
Windows Universal Apps
Develop business apps cross-platform development using visual studio with x...
Why is xamarin the preferred app development platform among app developers
Xamarin介紹
Mobile Cross-Platform App Development in C# with Xamarin

Similar to UWP apps development - Part 1 (20)

PPTX
Cross-Platform Mobile Development using Visual Studio and Xamarin
PPT
Android Application Development Training by NITIN GUPTA
PPT
Android
PPT
PPT
Android Applications
PPT
PDF
Android Seminar BY Suleman Khan.pdf
PPTX
C# no bolso - desenvolvendo apps multiplataforma
PDF
Windows Phone Programming
PPTX
Maximizing code reuse between Windows Phone 8 and Windows 8 (DevTeach Toronto...
PPT
Cross Platform Mobile App Development
PDF
Building Effective and Rapid Applications with IBM MobileFirst Platform
PPTX
Mobile Application Development powerpoint
PDF
Android Workshop Part 1
PPTX
C# everywhere: Xamarin and cross platform development
PDF
Deep Dive in Xamarin.Forms
PPTX
Windows 8 DevUnleashed - Session 1
PPT
Android based os
PDF
Infinum Android Talks #09 - Xamarin platform
PPT
Android App Developement
Cross-Platform Mobile Development using Visual Studio and Xamarin
Android Application Development Training by NITIN GUPTA
Android
Android Applications
Android Seminar BY Suleman Khan.pdf
C# no bolso - desenvolvendo apps multiplataforma
Windows Phone Programming
Maximizing code reuse between Windows Phone 8 and Windows 8 (DevTeach Toronto...
Cross Platform Mobile App Development
Building Effective and Rapid Applications with IBM MobileFirst Platform
Mobile Application Development powerpoint
Android Workshop Part 1
C# everywhere: Xamarin and cross platform development
Deep Dive in Xamarin.Forms
Windows 8 DevUnleashed - Session 1
Android based os
Infinum Android Talks #09 - Xamarin platform
Android App Developement
Ad

More from Jiri Danihelka (20)

PDF
Distributed Mobile Graphics
PPTX
Mixed reality for Windows 10
PPTX
New Xaml components for Windows developers
PPTX
MVVM Windows UWP apps with Template 10
PPTX
An introduction to development of universal applications
PPTX
Windows game development with Unity 5
PPTX
Creating great Unity games for Windows 10 - Part 2
PPTX
Creating great Unity games for Windows 10 - Part 1
PPTX
Prism library and MVVM
PPTX
UWP apps development - Part 3
PPTX
UWP apps development - Part 2
PPTX
Designing Windows apps with Xaml
PPTX
Advanced MVVM Windows UWP apps with Template 10
PPTX
Windows UX
PPTX
Blend for Visual Studio 2015
PPTX
Security misconfiguration
PPTX
Windows 10 Mobile and Distributed Graphics
PPTX
Security hardening and drown attack prevention for mobile backend developers
PPTX
Top 10 security risks for mobile backend developers
PPTX
Programování Windows 8
Distributed Mobile Graphics
Mixed reality for Windows 10
New Xaml components for Windows developers
MVVM Windows UWP apps with Template 10
An introduction to development of universal applications
Windows game development with Unity 5
Creating great Unity games for Windows 10 - Part 2
Creating great Unity games for Windows 10 - Part 1
Prism library and MVVM
UWP apps development - Part 3
UWP apps development - Part 2
Designing Windows apps with Xaml
Advanced MVVM Windows UWP apps with Template 10
Windows UX
Blend for Visual Studio 2015
Security misconfiguration
Windows 10 Mobile and Distributed Graphics
Security hardening and drown attack prevention for mobile backend developers
Top 10 security risks for mobile backend developers
Programování Windows 8
Ad

Recently uploaded (20)

PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PDF
Nekopoi APK 2025 free lastest update
PPTX
ai tools demonstartion for schools and inter college
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PDF
How Creative Agencies Leverage Project Management Software.pdf
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PPTX
Introduction to Artificial Intelligence
PDF
Digital Strategies for Manufacturing Companies
PDF
Odoo Companies in India – Driving Business Transformation.pdf
PPTX
Operating system designcfffgfgggggggvggggggggg
PDF
System and Network Administration Chapter 2
PPTX
Online Work Permit System for Fast Permit Processing
PPTX
history of c programming in notes for students .pptx
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
How to Choose the Right IT Partner for Your Business in Malaysia
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
Design an Analysis of Algorithms II-SECS-1021-03
Nekopoi APK 2025 free lastest update
ai tools demonstartion for schools and inter college
Adobe Illustrator 28.6 Crack My Vision of Vector Design
How Creative Agencies Leverage Project Management Software.pdf
Upgrade and Innovation Strategies for SAP ERP Customers
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
Introduction to Artificial Intelligence
Digital Strategies for Manufacturing Companies
Odoo Companies in India – Driving Business Transformation.pdf
Operating system designcfffgfgggggggvggggggggg
System and Network Administration Chapter 2
Online Work Permit System for Fast Permit Processing
history of c programming in notes for students .pptx
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool

UWP apps development - Part 1

  • 2. What is a universal app? • You can build an app that targets Windows and Windows Phone • It is not (currently): – A single binary – A non-Windows binary (Xamarin) application • Targeting iOS • Targeting Android – An HTML/JavaScript (Cordova) application
  • 3. What does it mean to be universal? The consumer promise • Similar theme • Common experience • Shared authentication • Shared data/profile • Single app purchase • Single IAP purchase
  • 5. What does it mean to be universal? The Windows Store perspective • Shared package full name • Single app purchase • Single IAP purchase • Roaming data • Shared notification channel
  • 6. What does it mean to be universal? The Visual Studio perspective • Shared project-type – A new feature or bug in one project, everything is updated • Still possible to tailor • Reusing code is meaningful because of unified APIs
  • 7. Solution 'App1' App1_Phone81 App1_Windows81 Class1.cs Page1.xaml Asset1.png Class1.cs Page1.xaml Asset1.png App.xaml App.xaml Solution 'App1' App1_Phone81 App1_Windows81 MyData.cs MyData.cs MyWebservice MyData.cs Linked files for sharing source code Solution 'App1' App1_Phone81 App1_Windows81 Class1.cs Page1.xaml Asset1.png References App1_Shared References App1_Shared App1_Shared App.xaml Shared Projects for sharing source code Solution 'App1' App1_Phone81 App1_Windows81 Class1.cs Page1.xaml Asset1.png References App1_PCL References App1_PCL App1_PCL App.xaml App.xaml .NET PCLs for sharing binaries Types of sharing Linked files in a super-crazy way
  • 8. Solution 'App1' App1_Phone81 App1_Windows81 Class1.cs Page1.xaml Asset1.png Class1.cs Page1.xaml Asset1.png App.xaml App.xaml Solution 'App1' App1_Phone81 App1_Windows81 MyData.cs MyData.cs MyWebservice MyData.cs Linked files for sharing source code Solution 'App1' App1_Phone81 App1_Windows81 Class1.cs Page1.xaml Asset1.png References App1_Shared References App1_Shared App1_Shared App.xaml Shared Projects for sharing source code Solution 'App1' App1_Phone81 App1_Windows81 Class1.cs Page1.xaml Asset1.png References App1_PCL References App1_PCL App1_PCL App.xaml App.xaml .NET PCLs for sharing binaries Types of sharing Linked files in a super-crazy way
  • 9. Consider… • Linked files – It’s all manual • Shared projects – Basically MSBuild • Portable class libraries – Lowest common denominator
  • 10. Rules of thumb • Compilation directives – Can make code difficult to read – Solves small, quick-hit platform problems • Partial classes – Makes it easy to isolate platform code – Difficult to see the entirety of your code • Base classes – Familiar concept to most programmers – Partial and abstract methods are options
  • 11. Three XAML strategies Solution 'App1' App1_Phone81 App1_Windows81 LoginPage.xaml References App1_Shared References App1_Shared App1_Shared Solving styles Faking themes  Adaptive nirvana Most reuse, least likely Solution 'App1' App1_Phone81 App1_Windows81 References App1_Shared References App1_Shared MainPage.xaml MainPage.xaml Device-specific Least friction, most likely LoginPage.xaml App1_Shared MainPage.xaml Solution 'App1' App1_Phone81 App1_Windows81 LoginPage.xaml References App1_Shared References App1_Shared App1_Shared MainPage.xaml Dictionary.xaml Dictionary.xaml
  • 12. Strategies to manage platform-specific visibility
  • 13. Reality check • Don’t expect to save time writing XAML • Do expect to save time writing implementation code
  • 14. Module recap • Code sharing strategies • Platform-specific code • Sharing XAML
  • 15. Module Agenda • Platform capabilities • Device variability • Design considerations
  • 16. Windows • Print contract • New window • Search Box • App Bar Phone • Call dialog • Back button • Status Bar • Pivot control Platform-specific capabilities
  • 17. Accessibility • UI automation – Accessibility checker • Assistive technologies – On screen keyboard, only Keyboard – Voice recognition, varying input – Screen readers, varying output • Theme Resources – High contrast – Variable Fonts • Media captioning • Customizing controls – Automation peers (IValueProvider) – Accessibility names / Label(Name) / View(Raw) / LiveRegion
  • 18. What if the user…? The emulator is sufficient for flow verification. Follow standard approaches with controls
  • 19. What if the device is…? 40” 30” 24” 18” 14” 10” 8” 6” 4” The emulator is insufficient for asset verification. Avoid adding additional scaling to your own assets. Don’t overthink it. If it looks good, you’re done. It’s up to you to set the expected size of assets.
  • 22. Designing with a common visual vocabulary TT
  • 23. Which design assets to share Windows • Assets • Scaled Images • Dictionaries • Templates.xaml • FontSizes.xaml • Controls.xaml • Platform.xaml • Views • Main.xaml • Detail.xaml • Settings.xaml Phone • Assets • Scaled Images • Dictionaries • Templates.xaml • FontSizes.xaml • Controls.xaml • Platform.xaml • Views • Main.xaml • Detail.xaml • Settings.xaml Shared • Images • Simple Images • Dictionaries • Brushes.xaml • FontFamilies.xaml • Views • Login.xaml • WidePage.xaml • NarrowPage.xaml