March Windows Phone 7 Roundup

Windows Phone SDK 7.1.1 Update Now Available

"it’s the final version of the CTP we released last month, and enables Windows Phone developers to do two things: Develop apps that work well on the new 256 MB devices; Use the WPSDK 7.1 to develop on machines running Window "

Find your local Windows Phone Champion

Reactive Extensions v2.0 Beta available now!

Windows Phone Data Binding Tutorial

Windows Phone Dev Podcast

SHARE:

Februaries Windows 7 Phone Roundup

http://blogs.msdn.com/b/astebner/archive/2012/02/27/10273543.aspx

"The Windows Phone SDK 7.1.1 Update – CTP provides a new 256 MB device emulator image and an updated 512 MB emulator, and it provides the ability to deploy, run, debug and profile your Windows Phone applications and games in the 512 MB emulator or the 256 MB emulator. "

http://blogs.msdn.com/b/katriend/archive/2012/02/22/quick-tip-windows-phone-7-guidance-patterns-amp-practices-release.aspx

“A Case Study for Building Advanced Windows Phone Applications: Connecting with Cloud Services"

http://erikej.blogspot.com.au/2012/01/sql-server-compact-toolbox-26visual.html

"The Windows Phone DataContext feature allows you generate a DataContext for use in Windows Phone projects, based on an existing database, saving you a large coding effort."

http://blogs.msdn.com/b/uk_faculty_connection/archive/2012/01/30/beta-release-of-the-amazon-web-services-aws-sdk-for-windows-phone.aspx

"Microsoft is pleased to announce the beta release of the Amazon Web Services (AWS) SDK for Windows Phone. Built by Microsoft as an open source project, this SDK provides developers quickly connect and integrate Windows Phone applications with AWS (S3, SimpleDB, and SQS Cloud Services)"

http://ux.artu.tv/?p=234

"Choosing between Panoramas, Pivots and/or Pages"

http://weblogs.asp.net/bsimser/archive/2012/01/29/the-big-dummies-guide-for-windows-phone-developer-resources.aspx

Amazing list of a gazillion WP7 resources : "The Big Dummies Guide for Windows Phone Developer Resources"

http://northernlights.codeplex.com/documentation

Northern Lights WP7 Toolkit - collection of tools such as : "NagForReview will ask, after a fix set of days and/or application starts, the user to review your app", "The checking of the application version against a txt file on a remote server enables you to inform the user, on startup of the app, that a newer version of your application is available", "The LittleWatson class let's you catch unhandled exception and automatically report them back to you through a webservice or let the user e-mail to you the next time the user opens up the application"

http://blogs.msdn.com/b/cdnstudents/archive/2012/01/30/winning-on-the-marketplace-the-differentiation-game.aspx

"Winning on the Marketplace: The differentiation game"

http://msdn.microsoft.com/en-us/library/hh202950(v=VS.92).aspx

"With App Connect, your application can be launched from the Pictures Hub, enabling a convenient launch experience for picture-related applications. This topic describes how to create an application that can be launched from the Pictures Hub."

http://msdn.microsoft.com/en-us/magazine/hh781024.aspx

"Get Your Windows Phone Applications in the Marketplace Faster"

http://msdn.microsoft.com/en-us/library/ff967560(VS.92).aspx#BKMK_Media

"Performance Considerations in Applications for Windows Phone"

http://msdn.microsoft.com/en-us/library/hh202904(VS.92).aspx

"Performance Techniques for Windows Phone"

http://www.pitorque.de/MisterGoodcat/post/Windows-Phone-Background-Agents-Pitfalls-(1-of-n).aspx

Windows Phone Background Agents Pitfalls

http://channel9.msdn.com/events/MIX/MIX11/DVC01

"Analyzing and Improving Windows Phone Application Performance"

http://blogs.msdn.com/b/kevinash/archive/2012/02/21/async-ctp-task-based-asynchronous-programming-for-windows-phone.aspx

Task based asynchronous programming CTP

http://blogs.msdn.com/b/abhinaba/archive/2012/02/02/wp7-clr-managed-object-overhead.aspx

Detailed discussion on memory costs in WP7 "WP7: CLR Managed Object overhead"

http://samidipbasu.com/2012/01/29/7-deadly-sins-for-wpdev/

"7 Deadly Sins for … Windows Phone Developer"

http://www.jeff.wilcox.name/2011/10/metrogridhelper/

MetroGridHelper - "fix those margins, align, and try and make your apps as beautiful and inspiring as you can"

http://www.windowsphonegeek.com/articles/MetroGrid-component-for-Windows-Phone

A version of MetroGridHelper that works at design time in Visual Studio/Blend

http://social.msdn.microsoft.com/Forums/en/windowsphone7series/thread/ef64d744-1d25-47f7-8ad7-3f102685d016

"Silverlight Validation WP7"

http://ux.artu.tv/?p=236

Really awesome, clear and concise guidelines for using Windows Phone 7 App Bar

http://blog.jerrynixon.com/2012/02/wp7-sample-use-location-services-and.html

Adding a Privacy Policy to your app

http://ux.artu.tv/?p=235

"Designing Windows Phone Icons"

http://templarian.com/2011/08/06/tutorial_creating_an_icon/

Great tutorial on creating icons in Expression Design

http://templarian.com/project_windows_phone_icons/

Icons!!

http://blog.jerrynixon.com/2012/02/wp7-sample-microphone-enabled-phone-app.html

Record and playback sound

http://blog.jerrynixon.com/2012/02/mango-sample-give-your-app-finger.html

Dragging UI items

http://dotnetslackers.com/articles/mobile/Windows-Phone-Fast-Application-Switching-and-Page-State.aspx

"An overview of fast application switching and page state in Windows Phone"

http://dontcodetired.com/blog/post/Introducing-(probably)-The-Worlds-Only-Mocking-Framework-for-Windows-Phone-7-(WP7).aspx

Introducing MoqaLate, (probably) The World's Only Mocking Framework for Windows Phone 7 (WP7)

http://blog.jerrynixon.com/2012/02/wp7-sample-accelerator-based-app-in-5.html

"This sample is the bare bones “how to use accelerometer”"

http://www.telerik.com/products/windows-phone/getting-started/promote-your-wp7-app.aspx

Great guide from Telerik on how to market your app, contains advice and some great links.

SHARE:

Introducing (probably) The World's Only Mocking Framework for Windows Phone 7 (WP7)

Introducing MoqaLate

Whilst I love developing apps for Windows Phone 7, the testing aspect is hard! I'm a TDD-er by default and it's such a pain to have to hand roll my own mock objects. 

So I created MoqaLate.

It's an alpha version but is usable now.

Not sure framework is the right term but it's something that generates mocks from your interfaces.

Add to existing project from NuGet:

PM> Install-Package MoqaLate

Read more about the project.

Download an example solution.

Read (currently very basic!) documentation.

View on NuGet.org

Awesome overview diagram :)

 

SHARE:

January Monthly Windows Phone 7 Roundup

This is the first of a series of monthly posts highlighting some useful and cool Windows Phone 7 stuff.

There will be a post on or about the last day of each month, with an overall "post of the month"

PhoneGap now fully supports Windows Phone

Delete from a List animation

Caliburn.Micro v1.3 RTW With Mango Support

Mango Sample: a Secondary Tile in 5 Minutes

Speed up HTTP-heavy apps by using GZip

Change to Light/Dark theme in app code

A Lap Around Windows Phone 7.5 webcast

Changing the keyboard and IsNumeric

Post of the Month

From Concept to Code in 6 hours: Shipping my first Windows Phone App

SHARE:

Baby Steps - Getting Started With Windows Phone 7 Development

These links are recommended reading to get started understanding developing for the Windows Phone 7 platform.

Recommended to be read in the order presented here, from most lightweight to most heavyweight.

The Metro design language overview - good for initial intro on what the platform stands for and the 'feel'.


http://go.microsoft.com/fwlink/?LinkID=189338

Cool A3 Cheat Sheet showing loads of examples of usage of WP7 controls


http://nordkapp.fi/blog/2011/05/wp7-for-designers-cheatsheet/

Awesome Free eBook for Developers covering some important areas, plus some awesome inspirational examples of apps people have created.


http://www.lulu.com/product/file-download/building-windows-phone-apps-a-developer%E2%80%99s-guide/17266976

UI Design and Interaction Guide for Windows Phone - 190+ pages - contains loads of detail


http://go.microsoft.com/fwlink/?LinkID=183218

Happy reading :)

SHARE:

MVVM Light Telling the View to play Storyboards

Sometimes you want to tell the view to play an animation (Storyboard). One simple way to do this is to define a StartStoryboardMessage class, populate this with the name of a Storyboard to play, then send it to the Messenger.

public class StartStoryboardMessage
{
    public string StoryboardName { getset; }
    public bool LoopForever { getset; }
}

In the viewmodel when you want to tell the view to play an animation:

Messenger.Default.Send(new StartStoryboardMessage { StoryboardName = "TimerFinAnimation",LoopForever=true });

The view (i.e. in the code-behind) registers for these messages:

Messenger.Default.Register<StartStoryboardMessage>(this, x => StartStoryboard(x.StoryboardName, x.LoopForever));

...

private void StartStoryboard(string storyboardName, bool loopForever)
{
    var storyboard = FindName(storyboardName) as Storyboard;
    if (storyboard != null)
    {
        if (loopForever) 
            storyboard.RepeatBehavior = RepeatBehavior.Forever;
        else
            storyboard.RepeatBehavior = new RepeatBehavior(1);
        storyboard.Begin();
    }
}

SHARE:

MVVM Light Messenger Action Executing Multiple Times

With MVVM Light you can get into a situation where you code-behind's message handler gets called multiple times.

If the ctor for the view is registering for a message then the every time the view loads another subscription will be added; then when the message is sent the are effectively 2 'listeners' which end up executing the registered Action method multiple times.

One solution to this is to make sure you un-register when the view unloads.

The example below shows the code-behind for a simple settings page that registers for a DialogMessage in the ctor, and un-registers when the page is done with.

    public partial class Settings : PhoneApplicationPage
    {
        public Settings()
        {
            InitializeComponent();
            Messenger.Default.Register<DialogMessage>(this, DialogMessageHandler);
        }
        private void DialogMessageHandler(DialogMessage message)
        {
            var result = MessageBox.Show(message.Content, message.Caption, message.Button);
            
            message.ProcessCallback(result);
        }
        private void PhoneApplicationPage_Unloaded(object sender, RoutedEventArgs e)
        {
            Messenger.Default.Unregister(this);
        }
    }

SHARE: