Windows Phone 7, MVVM and TDD (Part 6 – loading screen)

By Peter Daukintis

First we need to create the loading screen user control which is heavily based upon the one used here http://www.orktane.com/Blog/post/2010/01/23/iPhone-Sudoku-in-Silverlight-using-MVVM.aspx.


It consists of a grid containing eight rectangles which have associated animations that cycle through different greyscales/transparencies. The code-behind shows that the user control implements the IBusyIndicator from  http://babaandthepigman.spaces.live.com/blog/cns!4F1B7368284539E5!244.entry.

    public partial class BusyIndicator : UserControl, IBusyIndicator
        private readonly List<object> _tokens;

        public BusyIndicator()
            // Required to initialize variables
            _tokens = new List<object>();
            if (!System.ComponentModel.DesignerProperties.GetIsInDesignMode(this))
                LayoutRoot.Visibility = Visibility.Collapsed;

        #region Implementation of IBusyIndicator

        public void Hide(object token)
            if (_tokens.Count == 0)
                LayoutRoot.Visibility = Visibility.Collapsed;

        public void Show(object token)
            if (LayoutRoot.Visibility != Visibility.Visible)
                LayoutRoot.Visibility = Visibility.Visible;



Also, I will add one to the visual tree

            <myControls:BusyIndicator x:Name="BusyIndicator" d:IsHidden="True"/>

and in the MainPage code behind I will register the control with the service locator so the service can be made available:


This should enable the loading screen…but wait, somehow I’ve got this far without actually creating a UserRepository – so here goes…

    public class UserRepository : IUserRepository
        public bool Login(string username, string password)
            return (username == "fred" && password == "fred");

and, in the MVVM Light supplied ViewModelLocator (which constructs our MainViewModel), we can pass a new UserRepository into the constructor..

        public static void CreateMain()
            if (_main == null)
                _main = new MainViewModel(new UserRepository());

And that’s it for the loading screen!

Technorati Tags: ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

Windows Live Tags: MVVM,Part,Peter,Daukintis,user,Blog,Sudoku,grid,cycle,code,implements,IBusyIndicator,BusyIndicator,UserControl,List,InitializeComponent,System,ComponentModel,DesignerProperties,GetIsInDesignMode,LayoutRoot,region,Implementation,Hide,Remove,Count,CycleStoryboard,Stop,Visible,Begin,Also,tree,Name,IsHidden,True,MainPage,ServiceLocator,SetBusyIndicatorService,UserRepository,IUserRepository,Login,password,Thread,SpinWait,ViewModelLocator,MainViewModel,CreateMain,_main,animations,username

0 Responses to “Windows Phone 7, MVVM and TDD (Part 6 – loading screen)”

  1. Leave a Comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


Get every new post delivered to your Inbox.

%d bloggers like this: