Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Building Multi-Platform Native Apps with MVVM a...
Search
Greg Shackles
June 21, 2014
Technology
440
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Building Multi-Platform Native Apps with MVVM and C#
Greg Shackles
June 21, 2014
More Decks by Greg Shackles
See All by Greg Shackles
Building Modern Services with .NET Core 3 and gRPC
gshackles
0
210
Observability-Driven Development: What DevOps is Really About
gshackles
1
340
Monitoring Your Mobile Apps in the Wild
gshackles
1
130
Building Scalable Applications with the Actor Model
gshackles
0
690
Creating a Voice-Driven TV Remote with Azure and Alexa
gshackles
0
160
Build 2017 Recap for Xamarin Developers
gshackles
0
160
Going Serverless: Event-Driven Architecture Without The Infrastructure
gshackles
0
230
Evolve 2016 Redux
gshackles
0
170
Instrumenting Your Mobile Monitoring Strategy
gshackles
0
4.8k
Other Decks in Technology
See All in Technology
SREは、MCPとAutopilotをこう使え!
kazumax55
3
940
顧客に向き合う開発組織へ。リアーキテクチャとフィーチャーチーム化で挑む組織改革
safie
0
2.3k
SREへの勘違いに気づいた後の話
tomodakengo
0
120
30座EKS, 180次升級淬煉的EKS Upgrade Skill 的歷程
eric8230
0
210
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
5
25k
ユーザー価値を届け続けるためにウォンテッドリーが大切にしている文化
kotaminato
0
190
サーバーレスをどこまで使う? WebRTC対戦ゲームで選んだVPSとの共存設計
kaidouji85
0
290
Cloudflare Workers 向けアプリを C# で構築する ~WASM Native AOT への道~
nenonaninu
1
890
作って終わりじゃないサーバーレス 〜9年運用する大規模EC物流API基盤の設計・運用のリアル〜
zozotech
PRO
0
420
JSONataとAWS Step Functionsで目指すRuntimelessな世界
mu7889yoon
0
390
AI de Idea
kawaguti
PRO
2
130
あけおめLINE 傾向とその対策
nasa9084
0
190
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
From π to Pie charts
rasagy
1
370
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
410
Unsuck your backbone
ammeep
672
58k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
Being A Developer After 40
akosma
91
590k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.6k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
How to Think Like a Performance Engineer
csswizardry
28
2.8k
Utilizing Notion as your number one productivity tool
mfonobong
4
590
Transcript
Building Multi-Platform Native Apps with MVVM and C# Greg Shackles
Senior Software Engineer Olo @gshackles
[email protected]
github.com/gshackles
gonemobile.io @GoneMobileCast
Google Apple RIM Microsoft Symbian 52.5% Android 41.4% Apple 3.3%
Microsoft 2.5% RIM Source: comScore US Market Share: April 2014
Write Once, Run Anywhere
Write Once, Run Anywhere BUSTED
Xamarin: C# All The Things! * * and F# too!
Xamarin: C# All The Things! * * and F# too!
•100% Native
Xamarin: C# All The Things! * * and F# too!
•100% Native •Full access to platform SDKs
Xamarin: C# All The Things! * * and F# too!
•100% Native •Full access to platform SDKs •BCL, Async, LINQ, etc
Xamarin: C# All The Things! * * and F# too!
•100% Native •Full access to platform SDKs •BCL, Async, LINQ, etc •Improved API
Xamarin: C# All The Things! * * and F# too!
•100% Native •Full access to platform SDKs •BCL, Async, LINQ, etc •Improved API •Shared code across platforms
Xamarin: C# All The Things! * * and F# too!
•100% Native •Full access to platform SDKs •BCL, Async, LINQ, etc •Improved API •Shared code across platforms •Garbage collection
Xamarin: C# All The Things! * * and F# too!
•100% Native •Full access to platform SDKs •BCL, Async, LINQ, etc •Improved API •Shared code across platforms •Garbage collection •Visual Studio / Xamarin Studio
Xamarin: C# All The Things! * * and F# too!
•100% Native •Full access to platform SDKs •BCL, Async, LINQ, etc •Improved API •Shared code across platforms •Garbage collection •Visual Studio / Xamarin Studio •Frequent Releases
MVVM
MVVM View
MVVM View Model
MVVM View View Model Model
MVVM View Binder View Model Model
MVVM Click Me View Binder View Model Model
MVVM Click Me 1. action View Binder View Model Model
MVVM Click Me 1. action 2. event handling View Binder
View Model Model
MVVM Click Me 1. action 2. event handling 3. command
View Binder View Model Model
MVVM Click Me 1. action 2. event handling 3. command
4. access data View Binder View Model Model
MVVM Click Me 1. action 2. event handling 3. command
4. access data 5. notify change View Binder View Model Model
MVVM Click Me 1. action 2. event handling 3. command
4. access data 5. notify change 6. get changed data View Binder View Model Model
MVVM Click Me Hello World! 1. action 2. event handling
3. command 4. access data 5. notify change 6. get changed data 7. update UI View Binder View Model Model
MvvmCross
MvvmCross
MvvmCross: Highlights
• Shared behavior, not presentation MvvmCross: Highlights
• Shared behavior, not presentation • Bind all the platforms!
MvvmCross: Highlights
• Shared behavior, not presentation • Bind all the platforms!
• Powerful binding options MvvmCross: Highlights
• Shared behavior, not presentation • Bind all the platforms!
• Powerful binding options • Convention over configuration MvvmCross: Highlights
• Shared behavior, not presentation • Bind all the platforms!
• Powerful binding options • Convention over configuration • Pluggable architecture MvvmCross: Highlights
• Shared behavior, not presentation • Bind all the platforms!
• Powerful binding options • Convention over configuration • Pluggable architecture • PCL MvvmCross: Highlights
• Shared behavior, not presentation • Bind all the platforms!
• Powerful binding options • Convention over configuration • Pluggable architecture • PCL • Inversion of Control MvvmCross: Highlights
• Shared behavior, not presentation • Bind all the platforms!
• Powerful binding options • Convention over configuration • Pluggable architecture • PCL • Inversion of Control • Testable MvvmCross: Highlights
MvvmCross: Resources
•Source: github.com/slodge/MvvmCross MvvmCross: Resources
•Source: github.com/slodge/MvvmCross •Stuart’s Blog: slodge.blogspot.com MvvmCross: Resources
•Source: github.com/slodge/MvvmCross •Stuart’s Blog: slodge.blogspot.com •N+1: mvvmcross.wordpress.com MvvmCross: Resources
•Source: github.com/slodge/MvvmCross •Stuart’s Blog: slodge.blogspot.com •N+1: mvvmcross.wordpress.com •Chat: jabbr.net/#/rooms/mvvmcross MvvmCross:
Resources
Presenters
• Customize view presentation Presenters
• Customize view presentation • Platform-specific Presenters
• Customize view presentation • Platform-specific • Still retain View
Model logic Presenters
• Customize view presentation • Platform-specific • Still retain View
Model logic Presenters •Tabs / Panorama
• Customize view presentation • Platform-specific • Still retain View
Model logic Presenters •Tabs / Panorama •Split View / Master-Detail
• Customize view presentation • Platform-specific • Still retain View
Model logic Presenters •Tabs / Panorama •Split View / Master-Detail •Fragments
• Customize view presentation • Platform-specific • Still retain View
Model logic Presenters •Tabs / Panorama •Split View / Master-Detail •Fragments •Modals
• Customize view presentation • Platform-specific • Still retain View
Model logic Presenters •Tabs / Panorama •Split View / Master-Detail •Fragments •Modals •Hamburger menu
Presenters
Presenters
Presenters
Presenters
Plugins
Plugins • Accelerometer • Download Cache • Email • File
• Json • Localization • Location • Messenger • Phone Call • Picture Chooser • SQLite • Visibility • Web Browser • Many More!
Xamarin.Forms Shared C# App Logic Shared C# User Interface Code
None
Pages Content MasterDetail Navigation Tabbed Carousel
Pages Layouts Content MasterDetail Navigation Tabbed Carousel Stack Absolute Relative
Grid Content Scroll Frame
Controls
Controls • ActivityIndicator • BoxView • Button • DatePicker •
Editor • EntryImage • Label • ListView • Map • OpenGLView • PickerProgressBar • SearchBar • SliderStepper • TableView • TimePicker • WebView • EntryCell • ImageCell • SwitchCell • TextCell • ViewCell
None