Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Building Multi-Platform Native Apps with MVVM and C#
Search
Greg Shackles
September 14, 2013
Technology
2
3.1k
Building Multi-Platform Native Apps with MVVM and C#
Greg Shackles
September 14, 2013
Tweet
Share
More Decks by Greg Shackles
See All by Greg Shackles
Building Modern Services with .NET Core 3 and gRPC
gshackles
0
120
Observability-Driven Development: What DevOps is Really About
gshackles
1
250
Monitoring Your Mobile Apps in the Wild
gshackles
1
75
Building Scalable Applications with the Actor Model
gshackles
0
500
Creating a Voice-Driven TV Remote with Azure and Alexa
gshackles
0
74
Build 2017 Recap for Xamarin Developers
gshackles
0
78
Going Serverless: Event-Driven Architecture Without The Infrastructure
gshackles
0
150
Evolve 2016 Redux
gshackles
0
110
Instrumenting Your Mobile Monitoring Strategy
gshackles
0
4.5k
Other Decks in Technology
See All in Technology
あなたの知らないバグバウンティの世界
eurekaberry
1
1.4k
How to Build a Strong Engineering Culture
alperhankendi
0
120
履歴データテーブルとの向き合い方_PHPerKaigi2024
gennei
25
6.7k
Datadog による 自己完結的アプリケーションモニタリング
recruitengineers
PRO
3
130
「わたしたちのコード」を安定させるためにフレームワークとの距離を保つ / phperkaigi2024
blue_goheimochi
5
800
進化する事業とデータ構造 ~Cloudbaseの場合~
tockn
2
230
理想の組織も自分たちで作ろう! ―LayerXの「全員採用」を支える文化 / How to create our own ideal team
ar_tama
6
2.2k
Tohoku.Tech #1 「Cursorを使ったRaspberry Piの開発」by ねこまた
jun2882
0
150
君はApplication Composerというサービスを知っているか
tsukuboshi
1
520
サイボウズのQAエンジニア育成
cybozuinsideout
PRO
3
550
Skaffoldを用いたGKEアプリケーションの CD(Continuous Development)
kojake_300
1
120
実録_マルチテナント環境でのGmailガイドライン対応
ryuichi1208
7
1.5k
Featured
See All Featured
The Invisible Side of Design
smashingmag
293
49k
Designing on Purpose - Digital PM Summit 2013
jponch
109
6.4k
Principles of Awesome APIs and How to Build Them.
keavy
119
16k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
18
1.8k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
225
51k
Designing the Hi-DPI Web
ddemaree
275
33k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
657
120k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
153
14k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
0
3.2k
Happy Clients
brianwarren
91
6.3k
Design by the Numbers
sachag
274
18k
Music & Morning Musume
bryan
39
5.4k
Transcript
Building Multi-Platform Native Apps with MVVM and C# Greg Shackles
Senior Software Engineer OLO @gshackles
[email protected]
github.com/gshackles
nycmobiledev.net @NYCMobileDev
Gone Mobile gonemobile.io @GoneMobileCast
Google Apple RIM Microso! Symbian 52.0% Android 39.9% Apple 4.4%
RIM 3.1% Microsoft Source: comScore US Market Share: June 2013
Write Once, Run Anywhere
Write Once, Run Anywhere BUSTED
Xamarin: C# All The Things! * * plus some F#
for good measure •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 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
Binding: Properties
Binding: Collections
Binding: Actions
Binding: Value Converters
MvvmCross: Platforms
•Shared behavior, not presentation •Bind all the platforms! •Powerful binding
options •Convention over configuration •Pluggable architecture •PCL •Inversion of Control •Testable MvvmCross: Highlights
•Source: github.com/slodge/MvvmCross •Stuart’s Blog: slodge.blogspot.com •N+1: mvvmcross.wordpress.com •Chat: jabbr.net/#/rooms/mvvmcross MvvmCross:
Resources
•Customize view presentation •Platform-specific •Still retain View Model logic Presenters
•Tabs / Panorama •Split View / Master-Detail •Fragments •Modals •Hamburger menu
Presenters
Plugins • Accelerometer • Download Cache • Email • File
• Json • Localization • Location • Messenger • Phone Call • Picture Chooser • SQLite • Visibility • Web Browser • Many More!
None