Real World Windows Phone Dev Part 1: Introduction and Outline
Real World Windows Phone Dev Part 1: Introduction and Outline
Join the DZone community and get the full member experience.
Join For FreeThis series is going to walk through building a polished, functioning Windows Phone app from start to finish. The app is called Realworld Stocks and the full source code will be available on CodePlex as the series progresses. I’ll be using Mercurial to encourage forking and maybe even pull requests from developers who want to contribute their own real-world solutions.
Make sure you DOWNLOAD the Windows Phone 7.5 SDK
Realworld Stocks
The app we are creating is called Realworld Stocks, and this is what it looks like as of today. It’s not much yet, but hey, we’re only a few days in! Hopefully as the series progresses we’ll end up with a pretty nice looking stocks app ready for marketplace submission.
Series Outline
The following is a rough outline for how I expect this series to progress. Some parts will probably be added or removed (or broken out into smaller pieces). I will try really hard to write at least one post per week, so keep the pressure on if I start slacking!
- Introduction and Outline (this post)
- File –> New Project
- Caliburn.Micro and Application Infrastructure
- The Panorama
- Creating and Consuming HTTP Web Services
- Page Navigation and Passing Complex State
- State Management with ApplicationSettings and GlobalData
- Versioning Application settings when users upgrade
- Properly supporting Trial Mode
- Creating Multiple Live Tiles
- Updating tiles with Background Agents
- Creating reusable Blend Behaviors
- Polishing the User Input Experience
- Creating an Announcements/News Page
- Caching frequent images automatically into isolated storage
- Submitting your App
- Creating the global BusyIndictator (new topic!)
- Creating re-usable and themable Controls (new topic!)
- Controlling the AppBar from the ViewModel (new topic!)
Extended Topics
The following parts will not apply to every app but are still worth posting about – most likely as an extended part of this series.
- Adding some serious polish with Telerik RadControls for Windows Phone
- Persisting certain models into a database on the server using EF 4.1 Code-first
- Updating the current location with a Caliburn.Micro UploadLocationResult
- MVVM Visual State Management
- Theming your image resources using OpacityMask (bad) or convert to a Path with a Brush (good)
Get the Source Code
The full source code for this app will be be continuously updated on CodePlex at http://realworldwpdev.codeplex.com
There are 3 ways to get the source – the ideal way to keep updating as the app progresses would be to use TortoiseHg.
- Browse the Source at CodePlex
- Download the latest Source
- Use TortoiseHg to pull down and update to the latest source automatically
Mercurial with TortoiseHg
At first a new source control product may seem like a burden, but TortoiseHg is a great product, extremely easy to pull from a repository, and if you feel like it, a great time to learn about DVCS.
For a great video tutorial on using Mercurial with CodePlex check out this free Tekpub Production: Mercurial With Codeplex! The TortoiseHg UI in the video is slightly out of date now, but should still give you a great starting point!
- Download TortoiseHg
- In Windows Explorer, create a new folder where you want to download the source to
- Right click in the window, from TortoiseHg select Clone…
- Type the following Source https://hg01.codeplex.com/realworldwpdev and press Clone
- That’s it
Special Thanks
The following people have contributed either directly or indirectly to this app and I’d like to offer a very special thanks to them!
Thanks @Templarian for the iconography!
Thanks @JeffWilcox for the Samsung Focus Skin!
Thanks @magnusvw for connecting the backend to the Yahoo Finance API!
I hope everyone enjoys this series! Feedback always welcome!
Source: http://www.matthidinger.com/archive/2011/10/16/RealWorldWPDev-Part-1-Introduction-and-Outline.aspx
Opinions expressed by DZone contributors are their own.
{{ parent.title || parent.header.title}}
{{ parent.tldr }}
{{ parent.linkDescription }}
{{ parent.urlSource.name }}