8 Must-Have Tools for Windows Phone 7 Development
With Silverlight Spy you can run your Windows Phone 7 application and make design/layout changes in real-time and see those changes before your very eyes. Combine this with the Metro Grid Helper class from Jeff Wilcox so that you can easily visualise the Metro design guidelines and make changes on the fly and you have an amazing combination!
Unlike Expression Blend (and more like Firebug), you can simply select an element in your control tree and make those “just a little bit to the left” tweaks. You’ll note from my example image on the right of my Google Analytics app InTheKnow that it even highlights the control you have selected on the emulator screen.
It also has a built in Isolated Storage viewer, Screen shot tool, Resource viewer and XAP package explorer.
The licensing for Silverlight Spy has two options, a FREE limited version that doesn’t support Windows Phone 7, and a personal license for 69 euro.
In a word – Priceless
I will do a more detailed post on Silverlight Spy soon.
Isolated Storage Explorer
In very basic terms it allows you to copy the Isolated Storage for your Windows Phone 7 application to a local folder so that you can view/edit etc. the files that are stored on your device – you can then copy these files back onto your device allowing you to easily upload sample data to test certain situations that can be a bit harder such as large asset/image libraries, corrupted/invalid serialized data and performance issues from opening/saving overly large files.
This tool has helped me troubleshoot a number of weird serialization issues I've had in the past, and with the addition of Background Agents in Windows Phone 7.1 SDK its been a priceless tool for helping troubleshoot/view activity logs on my device during testing.
The Silverlight Toolkit is a package of controls that extend the Windows Phone 7 SDK and is released under the Microsoft Public License.
It is filled with a number of controls that are really missed in the base SDK (High Performance Progress Bar anyone?).
A number of these you simply can’t get by without – the WrapPanel and DateTimePickers are definitely in this group.
Portable Class Library project template
Most Windows Phone 7 apps end up having web services/websites/windows applications that sit side-by-side with them in a solution. Often this leads to code duplication as you keep your common classes in more than one place and struggle to keep them up to date/unit test them.
The Portable Class Library Visual Studio add-on solves this by offering a class library project type that is compatible with any .Net project (ASP.Net, WPF, Silverlight, XNA). I’ve also tested this in multiple build-server environments without problem.
Why this isn’t included as part of Visual Studio out-of-the-box we’ll never know.
I’ve used this in nearly every one of my Windows Phone 7 Projects – I highly recommend it.
High Performance Progress Bar
This is now included in the Mango version of the Silverlight Toolkit, but was originally created by Jeff Wilcox from the Windows Phone 7 team.
In simple terms if you use the Progress Bar control in Indeterminate mode (i.e. never ending a-synch waiting) in your Windows Phone 7 app, your Progress Bar is being a complete performance hog – the problem is more finicky in that you will only notice this problem once you’ve actually deployed your app to a real device as it runs fine in the emulator.
The problem is caused by the out-of-the-box Progress Bar control using the Compositor thread exclusively for it’s animation instead of the UI thread.
In the early days of Windows Phone development this was a gripe that a number of developers moaned about until Jeff came out with this replacement control.
Metro Grid Helper
The Windows Phone 7 team have definitely created something amazing with the Metro design styling that Windows Phone 7 comes with, but like nearly all design styles Metro looks most polished when everything is perfectly in symmetry.
For Metro this means 12px spacing everywhere, run on button text, and overall a simple rule of living and dying by alignment.
The tiny Nuget package MetroGridHelper (its only a single class!) serves these needs perfectly by simply overlaying a 24px x 24px grid with 12px spacing over your app to make fixing alignment issues and conforming to the Windows Phone 7 Design Guidelines dead simple.
Jeff released the first version of this at the end of 2011 and it hasn’t left my toolbox since.
Windows Phone Test Project
The unit testing tools available to Windows Phone 7 developers aren’t really there at all out-of-the-box.
A fellow Aussie Jake Ginnivan, noted this and created a project template that allows you to use either the Silverlight Unit Testing Framework or the WindowsPhoneEssentials.Testing Framework to unit test your Windows Phone 7 code.
I am still yet to see many developers discussing Unit Testing in the Windows Phone 7 world – mostly because a lot of apps written for the Windows Phone 7 platform are either simple or are written by people new to the .Net space.
I think this is a bit of a shame as i think the MVVM patterns works really well with unit testing, so there should definitely be more engagement in this space over the coming year (hopefully).
Check it out in either the Extension Manager inside Visual Studio 2010 or online:
This last one isn’t really essential but if you are spending a lot of time looking the Windows Phone 7 Emulator you’ll most probably be getting a little sick of the basic “looks like no Windows Phone I've ever seen” skin on your emulator.
This can be easily replaced by any number of other phone skins – many from phones you’ve seen your local Windows Phone 7 owners toting, and even other un-released or soon to be released phones such as the new Lumia 800.
The Windows Phone 7 Emulator Skin Switch has 25 skins to try.
Jeff Wilcox (tell me about it… it’s like this guy has nothing better to do than create awesome stuff for WP7 devs) has also created a single skin based on the device shown throughout the MSDN site:
(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)