Click here to Skip to main content
15,884,912 members
Articles / Mobile Apps / Windows Phone 7

Implementing Wizard Functionality for Windows Phone 7 Applications

Rate me:
Please Sign up or sign in to vote.
4.88/5 (12 votes)
5 Aug 2011CPOL23 min read 38.6K   683   17  
This article presents how to build a wizard for WP7 applications.
using System.Threading;
using WizardLibrary;
using MVVMSample1.ViewModel.WizardContent.WizardData;
using GalaSoft.MvvmLight.Threading;

namespace MVVMSample1.ViewModel.CustomWizards
{
    public class AdvancedWizard:DerivedWizard
    {
        public AdvancedWizard()
        {
            Title = "Advanced Wizard Title";
        }

        private bool isBusy;

        public bool IsBusy
        {
            get { return isBusy; }
            set
            {
                if (IsBusy == value)
                    return;
                isBusy = value;
                NotifyPropertyChanged("IsBusy");
            }
        }

        public override void Next()
        {
            //do some async work
            Thread th = new Thread((ThreadStart)(() =>
            {
                Thread.Sleep(4000);
                //process the data (set up the next step)
                DispatcherHelper.UIDispatcher.BeginInvoke(() =>
                {
                    int idx = Steps.IndexOf(CurrentStep);
                    if (idx < Steps.Count)
                    {//set the content for the next step
                        WizardStep vm = Steps[idx + 1];
                        if (idx == 0)
                        {
                            vm.Content = new SecondPageViewModel();
                        }
                        else if (idx == 1)
                        {
                            vm.Content = new ThirdPageViewModel();
                        }
                    }
                    IsBusy = false;
                    //call base version to move to the next step
                    base.Next();
                });
            }));
            th.IsBackground = true;
            th.Start();
            IsBusy = true;
        }
    }
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer
Romania Romania
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions