Applications may want to performs actions with certain timing, or tick intervals.  One example is a turn-based game like a card game where each computer player takes some time to play a turn.  An example which will be shown below is a slideshow application where photos are changed at 2 seconds intervals.  These are the controls used:

1. CheckBox - to toggle slideshow on/off

2. TextBox - to display the file name

3. Image - to display the image

4. ProgressBar - to display progress

  

 

For this sample slideshow application, drag and drop some images from your Sample Pictures folder to your project.  I used Koala.jpg, Jellyfish.jpg and Penguins.jpg.

 

 

This is the xaml:

 

    <Grid x:Name="LayoutRoot" Background="Transparent">

        <Grid.RowDefinitions>

            <RowDefinition Height="Auto"/>

            <RowDefinition Height="Auto"/>

            <RowDefinition Height="*"/>

            <RowDefinition Height="Auto"/>

        </Grid.RowDefinitions>

 

        <CheckBox Content="Slideshow Mode" Checked="CheckBox_Checked" Unchecked="CheckBox_Unchecked" IsChecked="True"  />

       

        <Grid x:Name="TitlePanel" Grid.Row="1">

            <Grid.ColumnDefinitions>

                <ColumnDefinition Width="Auto"/>

                <ColumnDefinition Width="*"/>

                <ColumnDefinition Width="Auto"/>

            </Grid.ColumnDefinitions>

            <TextBlock VerticalAlignment="Center" Text="File name: " />

            <TextBox Grid.Column="1" x:Name="textBox1" />

        </Grid>

 

        <Grid x:Name="ContentGrid" Grid.Row="2">

            <Image x:Name="Image1" />

        </Grid>

       

        <ProgressBar x:Name="ProgressBar1" Grid.Row="3" />

    </Grid>

 

  

And this is the code:

 

    public partial class MainPage : PhoneApplicationPage

    {

        DispatcherTimer timer = new DispatcherTimer();

        List<string> files = new List<string>() { "Koala.jpg", "Jellyfish.jpg", "Penguins.jpg" };

        List<BitmapImage> images = new List<BitmapImage>();

        int current = 0;

 

        // Constructor

        public MainPage()

        {

            InitializeComponent();

 

            ProgressBar1.Maximum = files.Count;

            foreach (string file in files)

            {

                BitmapImage image = new BitmapImage(new Uri(file, UriKind.Relative));

                images.Add(image);

            }

 

            timer = new DispatcherTimer();

            timer.Interval = TimeSpan.FromSeconds(2);

            timer.Tick += new EventHandler(timer_Tick);

 

            timer.Start();

        }

 

        void timer_Tick(object sender, EventArgs e)

        {

            Image1.Source = images[current];

            textBox1.Text = files[current];

            ProgressBar1.Value = current;

 

            current++;

            if (current >= files.Count)

                current = 0;

        }

 

        private void CheckBox_Checked(object sender, RoutedEventArgs e)

        {

            timer.Start();

        }

 

        private void CheckBox_Unchecked(object sender, RoutedEventArgs e)

        {

            timer.Stop();

        }

    }