SlideShare a Scribd company logo
Cross-Platform Apps with
Windows 8 & Windows Phone 8
Brent Edwards
Associate Principal Consultant
BrentE@magenic.com
@brentledwards
brentedwards.net
https://github.com/brentedwards
What We Will Cover
• MVVM
• Solution Structure
• Dealing with View Differences
• Dealing with Code Differences
• Navigation
• Application Settings
• Secondary Tiles
Introducing Charmed Framework
Charmed Framework
• Open source, cross-platform MVVM support library
– Windows 8
– Windows Phone 8
• https://github.com/brentedwards/Charmed
Charmed Reader
[Demo]
MVVM
Model-View-ViewModel
Model-View-ViewModel
Why is MVVM Cool?
• Separates Presentation from Functionality
• Promotes Testability
• Works great with Data Binding
• Easy collaboration with Designers
• Makes it easy to change out the View layer!
Solution Structure
Laying the Foundation
Solution Structure
• Windows 8 and Windows Phone 8
– Same Kernel
– Compile Differently
– Different Project Types
Solution Structure
• My Approach: One Solution with Several Project Types
Solution Structure
• Leverage “Add As Link” Feature
Dealing With View Differences
Dealing With View Differences
• What can be re-used across platforms?
– Presentation Logic Code (C#)
• What can’t be re-used across platforms?
– Presentation Code (XAML)
• Why?
– Different flavors of XAML
• Different styling concepts supported
– Different controls available
• GridView and ListView on Windows 8
• LongListSelector on Windows Phone 8
Dealing With View Differences
• What can be re-used from the presentation?
– Some design assets
• How is that possible?
– Windows 8 Snap View: 320px fixed width
• Why 320px?
– Mobile designers are used to it
• Windows Phone 8 Design -> Windows 8 Snap View
Windows Phone Design Re-Use
[Demo]
Dealing With Code Differences
Dealing With Code Differences
• What is different?
– Navigation
• Same URI-based navigation scheme
• Accept parameters differently
– Application Settings
• Different classes
– Secondary Tiles
• Same concept, fundamentally different implementations
Dealing With Code Differences
• How can I deal with platform differences?
– 3 techniques
• Compiler Directives
• Abstraction
• Compiler Directives + Abstraction
Compiler Directives
• Usage
– Windows 8
• #if NETFX_CORE
– Windows Phone 8
• #if WINDOWS_PHONE
• Pro
– Easy
• Con
– Can be messy
Abstraction
• Usage
– Abstract platform-specific functionality into abstract class or interface
• Pro
– Clean
• Con
– Can be complex
Compiler Directives + Abstraction
• Usage
– Move compiler directives behind abstraction layer
• Pro
– Can keep the mess out of view models
• Con
– Still can be messy
Navigation
Navigation
• Both platforms use URI-based navigation
– They differ in their use of parameters
• Windows 8 allows 1 parameter
– Can be anything
• Windows Phone 8 uses query string
– Can have many parameters, must all be strings
• Neither implementation can be easily mocked for unit testing
Navigation
• Solution
– Provide consistent interface which takes 1 parameter
• Serialize that parameter to a string
Navigation
[Demo]
Application Settings
Application Settings
• Both platforms have very similar functionality
– Different classes involved
• Neither implementation can be easily mocked for unit testing
Application Settings
• Solution
– Provide consistent interface
• Use compiler directives in implementation
Application Settings
[Demo]
Secondary Tiles
Secondary Tiles
• Both platforms have similar concept, but fundamentally different implementations
• Windows 8
– Requires user approval to pin/unpin tile
– Always launches through App.xaml.cs
– Asynchronous
• Windows Phone 8
– Doesn’t need user approval to pin/unpin tile
– Can launch directly into a specific page
– Synchronous
Secondary Tiles
• Solution
– Provide consistent interface with platform-specific implementations
– Configure Windows Phone 8 to always launch through same page
Secondary Tiles
[Demo]
What We Covered
• MVVM
• Solution Structure
• Dealing with View Differences
• Dealing with Code Differences
• Navigation
• Application Settings
• Secondary Tiles
Questions?

More Related Content

What's hot

Power shell basics day 2
Power shell basics day 2Power shell basics day 2
Power shell basics day 2
Ashish Raj
 
Features of windows
Features of windowsFeatures of windows
Features of windows
myrajendra
 
Learn .net and develop the web applications
Learn .net and develop the web applicationsLearn .net and develop the web applications
Learn .net and develop the web applications
times institute of management and technical studies
 
A Simple MVC Framework for Widget Development
A Simple MVC Framework for Widget DevelopmentA Simple MVC Framework for Widget Development
A Simple MVC Framework for Widget Development
Martin Ebner
 
Acrhitecture deisign pattern_MVC_MVP_MVVM
Acrhitecture deisign pattern_MVC_MVP_MVVMAcrhitecture deisign pattern_MVC_MVP_MVVM
Acrhitecture deisign pattern_MVC_MVP_MVVM
Dong-Ho Lee
 
Crossover
CrossoverCrossover
Crossover
szlwzl
 
Selenium - what it is and what you can do with it
Selenium - what it is and what you can do with itSelenium - what it is and what you can do with it
Selenium - what it is and what you can do with it
David Stark
 
Introducing Selenium Builder – the Future of Test Development
Introducing Selenium Builder – the Future of Test DevelopmentIntroducing Selenium Builder – the Future of Test Development
Introducing Selenium Builder – the Future of Test Development
seleniumconf
 
Selenium Builder
Selenium BuilderSelenium Builder
Selenium Builder
David Stark
 
Mule m unit
Mule m unitMule m unit
Mule m unit
VirtusaPolaris
 
Evolution of wcf
Evolution of wcfEvolution of wcf
Evolution of wcf
Sunny Sharma
 

What's hot (11)

Power shell basics day 2
Power shell basics day 2Power shell basics day 2
Power shell basics day 2
 
Features of windows
Features of windowsFeatures of windows
Features of windows
 
Learn .net and develop the web applications
Learn .net and develop the web applicationsLearn .net and develop the web applications
Learn .net and develop the web applications
 
A Simple MVC Framework for Widget Development
A Simple MVC Framework for Widget DevelopmentA Simple MVC Framework for Widget Development
A Simple MVC Framework for Widget Development
 
Acrhitecture deisign pattern_MVC_MVP_MVVM
Acrhitecture deisign pattern_MVC_MVP_MVVMAcrhitecture deisign pattern_MVC_MVP_MVVM
Acrhitecture deisign pattern_MVC_MVP_MVVM
 
Crossover
CrossoverCrossover
Crossover
 
Selenium - what it is and what you can do with it
Selenium - what it is and what you can do with itSelenium - what it is and what you can do with it
Selenium - what it is and what you can do with it
 
Introducing Selenium Builder – the Future of Test Development
Introducing Selenium Builder – the Future of Test DevelopmentIntroducing Selenium Builder – the Future of Test Development
Introducing Selenium Builder – the Future of Test Development
 
Selenium Builder
Selenium BuilderSelenium Builder
Selenium Builder
 
Mule m unit
Mule m unitMule m unit
Mule m unit
 
Evolution of wcf
Evolution of wcfEvolution of wcf
Evolution of wcf
 

Viewers also liked

RISE & SHINE - tema ehälsa
RISE & SHINE - tema ehälsaRISE & SHINE - tema ehälsa
RISE & SHINE - tema ehälsa
Dag Forsén
 
Scdsb information and communication technology initiatives january 2011 final
Scdsb information and communication technology initiatives january 2011 finalScdsb information and communication technology initiatives january 2011 final
Scdsb information and communication technology initiatives january 2011 final
jaccalder
 
Proyecto Basuras
Proyecto BasurasProyecto Basuras
Proyecto Basuras
guest0de26f4
 
Primer on Economic Development
Primer on Economic DevelopmentPrimer on Economic Development
Primer on Economic Development
Stephanie Lindley
 
European Venture Market
European Venture MarketEuropean Venture Market
European Venture Market
Continua Unternehmensentwicklung GmbH
 
Doc4400
Doc4400Doc4400
Doc4400
guest1415b4
 
Netbook trial 21st century learning 2010
Netbook trial 21st century learning 2010Netbook trial 21st century learning 2010
Netbook trial 21st century learning 2010
cummingscraig
 
Taller salud ocupacional
Taller salud ocupacionalTaller salud ocupacional
Taller salud ocupacional
guest531f33
 
Getting to the Heart of the Matter: Communities and Health Systems Strengthening
Getting to the Heart of the Matter: Communities and Health Systems StrengtheningGetting to the Heart of the Matter: Communities and Health Systems Strengthening
Getting to the Heart of the Matter: Communities and Health Systems Strengthening
jehill3
 
Haal meer uit je website / vergroot je online rendement
Haal meer uit je website / vergroot je online rendementHaal meer uit je website / vergroot je online rendement
Haal meer uit je website / vergroot je online rendement
Wieger Waardenburg
 
Data slidedeck
Data slidedeck Data slidedeck
Data slidedeck
jaccalder
 
Incidence of posterior capsular opacification in rigid pmma
Incidence of posterior capsular opacification in rigid pmmaIncidence of posterior capsular opacification in rigid pmma
Incidence of posterior capsular opacification in rigid pmma
Dr. Anand Sudhalkar
 
Fundus fluorescein angiography
Fundus fluorescein angiographyFundus fluorescein angiography
Fundus fluorescein angiography
Dr. Anand Sudhalkar
 
Pdf birmingham digital advantge 1
Pdf birmingham digital advantge 1Pdf birmingham digital advantge 1
Pdf birmingham digital advantge 1
andylovatt
 
Changing trends in ophthalmic practice 2
Changing trends in ophthalmic practice 2Changing trends in ophthalmic practice 2
Changing trends in ophthalmic practice 2
Dr. Anand Sudhalkar
 
Perimetros areas para blogs
Perimetros areas para blogsPerimetros areas para blogs
Perimetros areas para blogs
lmartinezcastillo
 
Polypill poster Istanbul, Nov 2014
Polypill poster Istanbul, Nov 2014Polypill poster Istanbul, Nov 2014
Polypill poster Istanbul, Nov 2014
Dr. Anand Sudhalkar
 

Viewers also liked (20)

RISE & SHINE - tema ehälsa
RISE & SHINE - tema ehälsaRISE & SHINE - tema ehälsa
RISE & SHINE - tema ehälsa
 
Scdsb information and communication technology initiatives january 2011 final
Scdsb information and communication technology initiatives january 2011 finalScdsb information and communication technology initiatives january 2011 final
Scdsb information and communication technology initiatives january 2011 final
 
Dinnershow of Dreams
Dinnershow of DreamsDinnershow of Dreams
Dinnershow of Dreams
 
Proyecto Basuras
Proyecto BasurasProyecto Basuras
Proyecto Basuras
 
Primer on Economic Development
Primer on Economic DevelopmentPrimer on Economic Development
Primer on Economic Development
 
European Venture Market
European Venture MarketEuropean Venture Market
European Venture Market
 
Doc4400
Doc4400Doc4400
Doc4400
 
Netbook trial 21st century learning 2010
Netbook trial 21st century learning 2010Netbook trial 21st century learning 2010
Netbook trial 21st century learning 2010
 
Taller salud ocupacional
Taller salud ocupacionalTaller salud ocupacional
Taller salud ocupacional
 
Getting to the Heart of the Matter: Communities and Health Systems Strengthening
Getting to the Heart of the Matter: Communities and Health Systems StrengtheningGetting to the Heart of the Matter: Communities and Health Systems Strengthening
Getting to the Heart of the Matter: Communities and Health Systems Strengthening
 
Haal meer uit je website / vergroot je online rendement
Haal meer uit je website / vergroot je online rendementHaal meer uit je website / vergroot je online rendement
Haal meer uit je website / vergroot je online rendement
 
Data slidedeck
Data slidedeck Data slidedeck
Data slidedeck
 
Incidence of posterior capsular opacification in rigid pmma
Incidence of posterior capsular opacification in rigid pmmaIncidence of posterior capsular opacification in rigid pmma
Incidence of posterior capsular opacification in rigid pmma
 
Fundus fluorescein angiography
Fundus fluorescein angiographyFundus fluorescein angiography
Fundus fluorescein angiography
 
S s
S sS s
S s
 
Two suns 2
Two suns 2Two suns 2
Two suns 2
 
Pdf birmingham digital advantge 1
Pdf birmingham digital advantge 1Pdf birmingham digital advantge 1
Pdf birmingham digital advantge 1
 
Changing trends in ophthalmic practice 2
Changing trends in ophthalmic practice 2Changing trends in ophthalmic practice 2
Changing trends in ophthalmic practice 2
 
Perimetros areas para blogs
Perimetros areas para blogsPerimetros areas para blogs
Perimetros areas para blogs
 
Polypill poster Istanbul, Nov 2014
Polypill poster Istanbul, Nov 2014Polypill poster Istanbul, Nov 2014
Polypill poster Istanbul, Nov 2014
 

Similar to Cross Platform Apps with Windows 8 & Windows Phone 8

Visual Basic User Interface-III
Visual Basic User Interface-IIIVisual Basic User Interface-III
Visual Basic User Interface-III
Sharbani Bhattacharya
 
Kevin Whinnery: Best Practices for Cross-Platform Mobile Development
Kevin Whinnery: Best Practices for Cross-Platform Mobile DevelopmentKevin Whinnery: Best Practices for Cross-Platform Mobile Development
Kevin Whinnery: Best Practices for Cross-Platform Mobile Development
Axway Appcelerator
 
Maximizing code reuse between Windows Phone 8 and Windows 8 (DevTeach Toronto...
Maximizing code reuse between Windows Phone 8 and Windows 8 (DevTeach Toronto...Maximizing code reuse between Windows Phone 8 and Windows 8 (DevTeach Toronto...
Maximizing code reuse between Windows Phone 8 and Windows 8 (DevTeach Toronto...
Ken Cenerelli
 
Architectural Design & Patterns
Architectural Design&PatternsArchitectural Design&Patterns
Architectural Design & Patterns
Inocentshuja Ahmad
 
Building apps for WP8 and Win8
Building apps for WP8 and Win8Building apps for WP8 and Win8
Building apps for WP8 and Win8
Laurent Duveau
 
Difference between .net core and .net framework
Difference between .net core and .net frameworkDifference between .net core and .net framework
Difference between .net core and .net framework
Ansi Bytecode
 
Foundational Design Patterns for Multi-Purpose Applications
Foundational Design Patterns for Multi-Purpose ApplicationsFoundational Design Patterns for Multi-Purpose Applications
Foundational Design Patterns for Multi-Purpose Applications
Ching-Hwa Yu
 
Unboxing ASP.NET Core
Unboxing ASP.NET CoreUnboxing ASP.NET Core
Unboxing ASP.NET Core
Kevin Leung
 
Lecture 10
Lecture 10Lecture 10
Lecture 10
Skillspire LLC
 
A Smooth Transition to HTML5 Using MVVM
A Smooth Transition to HTML5 Using MVVMA Smooth Transition to HTML5 Using MVVM
A Smooth Transition to HTML5 Using MVVM
Chris Bannon
 
Introduction_to_NET.ppt
Introduction_to_NET.pptIntroduction_to_NET.ppt
Introduction_to_NET.ppt
Darwin Terraza
 
Generic repository pattern with ASP.NET MVC and Entity Framework
Generic repository pattern with ASP.NET MVC and Entity FrameworkGeneric repository pattern with ASP.NET MVC and Entity Framework
Generic repository pattern with ASP.NET MVC and Entity Framework
Md. Mahedee Hasan
 
Generic Repository Pattern with ASP.NET MVC and EF
Generic Repository Pattern with ASP.NET MVC and EFGeneric Repository Pattern with ASP.NET MVC and EF
Generic Repository Pattern with ASP.NET MVC and EF
Md. Mahedee Hasan
 
Design pattern
Design patternDesign pattern
Design pattern
Shreyance Jain
 
Accelerating time to delivery: Modernizing Application Development
Accelerating time to delivery: Modernizing Application DevelopmentAccelerating time to delivery: Modernizing Application Development
Accelerating time to delivery: Modernizing Application Development
Micro Focus
 
The .NET Platform - A Brief Overview
The .NET Platform - A Brief OverviewThe .NET Platform - A Brief Overview
The .NET Platform - A Brief Overview
Carlos Lopes
 
AToMPM - Features
AToMPM - FeaturesAToMPM - Features
AToMPM - Features
Eugene Syriani
 
Develop business apps cross-platform development using visual studio with x...
Develop business apps   cross-platform development using visual studio with x...Develop business apps   cross-platform development using visual studio with x...
Develop business apps cross-platform development using visual studio with x...
Alexander Meijers
 
CICD Pipelines for Microservices: Lessons from the Trenches
CICD Pipelines for Microservices: Lessons from the TrenchesCICD Pipelines for Microservices: Lessons from the Trenches
CICD Pipelines for Microservices: Lessons from the Trenches
Codefresh
 
Cloud Native Engineering with SRE and GitOps
Cloud Native Engineering with SRE and GitOpsCloud Native Engineering with SRE and GitOps
Cloud Native Engineering with SRE and GitOps
Weaveworks
 

Similar to Cross Platform Apps with Windows 8 & Windows Phone 8 (20)

Visual Basic User Interface-III
Visual Basic User Interface-IIIVisual Basic User Interface-III
Visual Basic User Interface-III
 
Kevin Whinnery: Best Practices for Cross-Platform Mobile Development
Kevin Whinnery: Best Practices for Cross-Platform Mobile DevelopmentKevin Whinnery: Best Practices for Cross-Platform Mobile Development
Kevin Whinnery: Best Practices for Cross-Platform Mobile Development
 
Maximizing code reuse between Windows Phone 8 and Windows 8 (DevTeach Toronto...
Maximizing code reuse between Windows Phone 8 and Windows 8 (DevTeach Toronto...Maximizing code reuse between Windows Phone 8 and Windows 8 (DevTeach Toronto...
Maximizing code reuse between Windows Phone 8 and Windows 8 (DevTeach Toronto...
 
Architectural Design & Patterns
Architectural Design&PatternsArchitectural Design&Patterns
Architectural Design & Patterns
 
Building apps for WP8 and Win8
Building apps for WP8 and Win8Building apps for WP8 and Win8
Building apps for WP8 and Win8
 
Difference between .net core and .net framework
Difference between .net core and .net frameworkDifference between .net core and .net framework
Difference between .net core and .net framework
 
Foundational Design Patterns for Multi-Purpose Applications
Foundational Design Patterns for Multi-Purpose ApplicationsFoundational Design Patterns for Multi-Purpose Applications
Foundational Design Patterns for Multi-Purpose Applications
 
Unboxing ASP.NET Core
Unboxing ASP.NET CoreUnboxing ASP.NET Core
Unboxing ASP.NET Core
 
Lecture 10
Lecture 10Lecture 10
Lecture 10
 
A Smooth Transition to HTML5 Using MVVM
A Smooth Transition to HTML5 Using MVVMA Smooth Transition to HTML5 Using MVVM
A Smooth Transition to HTML5 Using MVVM
 
Introduction_to_NET.ppt
Introduction_to_NET.pptIntroduction_to_NET.ppt
Introduction_to_NET.ppt
 
Generic repository pattern with ASP.NET MVC and Entity Framework
Generic repository pattern with ASP.NET MVC and Entity FrameworkGeneric repository pattern with ASP.NET MVC and Entity Framework
Generic repository pattern with ASP.NET MVC and Entity Framework
 
Generic Repository Pattern with ASP.NET MVC and EF
Generic Repository Pattern with ASP.NET MVC and EFGeneric Repository Pattern with ASP.NET MVC and EF
Generic Repository Pattern with ASP.NET MVC and EF
 
Design pattern
Design patternDesign pattern
Design pattern
 
Accelerating time to delivery: Modernizing Application Development
Accelerating time to delivery: Modernizing Application DevelopmentAccelerating time to delivery: Modernizing Application Development
Accelerating time to delivery: Modernizing Application Development
 
The .NET Platform - A Brief Overview
The .NET Platform - A Brief OverviewThe .NET Platform - A Brief Overview
The .NET Platform - A Brief Overview
 
AToMPM - Features
AToMPM - FeaturesAToMPM - Features
AToMPM - Features
 
Develop business apps cross-platform development using visual studio with x...
Develop business apps   cross-platform development using visual studio with x...Develop business apps   cross-platform development using visual studio with x...
Develop business apps cross-platform development using visual studio with x...
 
CICD Pipelines for Microservices: Lessons from the Trenches
CICD Pipelines for Microservices: Lessons from the TrenchesCICD Pipelines for Microservices: Lessons from the Trenches
CICD Pipelines for Microservices: Lessons from the Trenches
 
Cloud Native Engineering with SRE and GitOps
Cloud Native Engineering with SRE and GitOpsCloud Native Engineering with SRE and GitOps
Cloud Native Engineering with SRE and GitOps
 

Recently uploaded

How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
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
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
kumardaparthi1024
 
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
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
Daiki Mogmet Ito
 
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
 
Recommendation System using RAG Architecture
Recommendation System using RAG ArchitectureRecommendation System using RAG Architecture
Recommendation System using RAG Architecture
fredae14
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Alpen-Adria-Universität
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
Brandon Minnick, MBA
 
Project Management Semester Long Project - Acuity
Project Management Semester Long Project - AcuityProject Management Semester Long Project - Acuity
Project Management Semester Long Project - Acuity
jpupo2018
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
Jason Packer
 
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
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
Zilliz
 
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
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
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
 
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxOcean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
SitimaJohn
 

Recently uploaded (20)

How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
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
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
 
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
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
 
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
 
Recommendation System using RAG Architecture
Recommendation System using RAG ArchitectureRecommendation System using RAG Architecture
Recommendation System using RAG Architecture
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
 
Project Management Semester Long Project - Acuity
Project Management Semester Long Project - AcuityProject Management Semester Long Project - Acuity
Project Management Semester Long Project - Acuity
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
 
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
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
 
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
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
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
 
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxOcean lotus Threat actors project by John Sitima 2024 (1).pptx
Ocean lotus Threat actors project by John Sitima 2024 (1).pptx
 

Cross Platform Apps with Windows 8 & Windows Phone 8

  • 1. Cross-Platform Apps with Windows 8 & Windows Phone 8 Brent Edwards Associate Principal Consultant BrentE@magenic.com @brentledwards brentedwards.net https://github.com/brentedwards
  • 2. What We Will Cover • MVVM • Solution Structure • Dealing with View Differences • Dealing with Code Differences • Navigation • Application Settings • Secondary Tiles
  • 4. Charmed Framework • Open source, cross-platform MVVM support library – Windows 8 – Windows Phone 8 • https://github.com/brentedwards/Charmed
  • 8. Why is MVVM Cool? • Separates Presentation from Functionality • Promotes Testability • Works great with Data Binding • Easy collaboration with Designers • Makes it easy to change out the View layer!
  • 10. Solution Structure • Windows 8 and Windows Phone 8 – Same Kernel – Compile Differently – Different Project Types
  • 11. Solution Structure • My Approach: One Solution with Several Project Types
  • 12. Solution Structure • Leverage “Add As Link” Feature
  • 13. Dealing With View Differences
  • 14. Dealing With View Differences • What can be re-used across platforms? – Presentation Logic Code (C#) • What can’t be re-used across platforms? – Presentation Code (XAML) • Why? – Different flavors of XAML • Different styling concepts supported – Different controls available • GridView and ListView on Windows 8 • LongListSelector on Windows Phone 8
  • 15. Dealing With View Differences • What can be re-used from the presentation? – Some design assets • How is that possible? – Windows 8 Snap View: 320px fixed width • Why 320px? – Mobile designers are used to it • Windows Phone 8 Design -> Windows 8 Snap View
  • 16. Windows Phone Design Re-Use [Demo]
  • 17. Dealing With Code Differences
  • 18. Dealing With Code Differences • What is different? – Navigation • Same URI-based navigation scheme • Accept parameters differently – Application Settings • Different classes – Secondary Tiles • Same concept, fundamentally different implementations
  • 19. Dealing With Code Differences • How can I deal with platform differences? – 3 techniques • Compiler Directives • Abstraction • Compiler Directives + Abstraction
  • 20. Compiler Directives • Usage – Windows 8 • #if NETFX_CORE – Windows Phone 8 • #if WINDOWS_PHONE • Pro – Easy • Con – Can be messy
  • 21. Abstraction • Usage – Abstract platform-specific functionality into abstract class or interface • Pro – Clean • Con – Can be complex
  • 22. Compiler Directives + Abstraction • Usage – Move compiler directives behind abstraction layer • Pro – Can keep the mess out of view models • Con – Still can be messy
  • 24. Navigation • Both platforms use URI-based navigation – They differ in their use of parameters • Windows 8 allows 1 parameter – Can be anything • Windows Phone 8 uses query string – Can have many parameters, must all be strings • Neither implementation can be easily mocked for unit testing
  • 25. Navigation • Solution – Provide consistent interface which takes 1 parameter • Serialize that parameter to a string
  • 28. Application Settings • Both platforms have very similar functionality – Different classes involved • Neither implementation can be easily mocked for unit testing
  • 29. Application Settings • Solution – Provide consistent interface • Use compiler directives in implementation
  • 32. Secondary Tiles • Both platforms have similar concept, but fundamentally different implementations • Windows 8 – Requires user approval to pin/unpin tile – Always launches through App.xaml.cs – Asynchronous • Windows Phone 8 – Doesn’t need user approval to pin/unpin tile – Can launch directly into a specific page – Synchronous
  • 33. Secondary Tiles • Solution – Provide consistent interface with platform-specific implementations – Configure Windows Phone 8 to always launch through same page
  • 35. What We Covered • MVVM • Solution Structure • Dealing with View Differences • Dealing with Code Differences • Navigation • Application Settings • Secondary Tiles