Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Building Multi-Platform Native Apps with MVVM a...

Building Multi-Platform Native Apps with MVVM and C#

Greg Shackles

June 21, 2014
Tweet

More Decks by Greg Shackles

Other Decks in Technology

Transcript

  1. Building Multi-Platform Native Apps with MVVM and C# Greg Shackles

    Senior Software Engineer Olo @gshackles [email protected] github.com/gshackles
  2. Google Apple RIM Microsoft Symbian 52.5% Android 41.4% Apple 3.3%

    Microsoft 2.5% RIM Source: comScore US Market Share: April 2014
  3. Xamarin: C# All The Things! * * and F# too!

    •100% Native •Full access to platform SDKs
  4. Xamarin: C# All The Things! * * and F# too!

    •100% Native •Full access to platform SDKs •BCL, Async, LINQ, etc
  5. Xamarin: C# All The Things! * * and F# too!

    •100% Native •Full access to platform SDKs •BCL, Async, LINQ, etc •Improved API
  6. 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
  7. 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
  8. 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
  9. 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
  10. MVVM Click Me 1. action 2. event handling 3. command

    4. access data View Binder View Model Model
  11. MVVM Click Me 1. action 2. event handling 3. command

    4. access data 5. notify change View Binder View Model Model
  12. 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
  13. 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
  14. • Shared behavior, not presentation • Bind all the platforms!

    • Powerful binding options MvvmCross: Highlights
  15. • Shared behavior, not presentation • Bind all the platforms!

    • Powerful binding options • Convention over configuration MvvmCross: Highlights
  16. • Shared behavior, not presentation • Bind all the platforms!

    • Powerful binding options • Convention over configuration • Pluggable architecture MvvmCross: Highlights
  17. • Shared behavior, not presentation • Bind all the platforms!

    • Powerful binding options • Convention over configuration • Pluggable architecture • PCL MvvmCross: Highlights
  18. • Shared behavior, not presentation • Bind all the platforms!

    • Powerful binding options • Convention over configuration • Pluggable architecture • PCL • Inversion of Control MvvmCross: Highlights
  19. • Shared behavior, not presentation • Bind all the platforms!

    • Powerful binding options • Convention over configuration • Pluggable architecture • PCL • Inversion of Control • Testable MvvmCross: Highlights
  20. • Customize view presentation • Platform-specific • Still retain View

    Model logic Presenters •Tabs / Panorama •Split View / Master-Detail
  21. • Customize view presentation • Platform-specific • Still retain View

    Model logic Presenters •Tabs / Panorama •Split View / Master-Detail •Fragments
  22. • Customize view presentation • Platform-specific • Still retain View

    Model logic Presenters •Tabs / Panorama •Split View / Master-Detail •Fragments •Modals
  23. • Customize view presentation • Platform-specific • Still retain View

    Model logic Presenters •Tabs / Panorama •Split View / Master-Detail •Fragments •Modals •Hamburger menu
  24. Plugins • Accelerometer • Download Cache • Email • File

    • Json • Localization • Location • Messenger • Phone Call • Picture Chooser • SQLite • Visibility • Web Browser • Many More!
  25. Controls • ActivityIndicator • BoxView • Button • DatePicker •

    Editor • EntryImage • Label • ListView • Map • OpenGLView • PickerProgressBar • SearchBar • SliderStepper • TableView • TimePicker • WebView • EntryCell • ImageCell • SwitchCell • TextCell • ViewCell