Automatically flip images in windows 8

I have a flip view, and I want it to automatically change images every n seconds, preventing the user from clicking to the right or left.

+4
source share
1 answer

Use DispatcherTimer to control the interval at which you want to change the image, and set SelectedIndex to FlipView (by name - or setting the property associated with SelectedIndex on viewmodel if you are using MVVM).

EDIT

Here is an example of using text blocks instead of images (the contents of FlipView elements FlipView not related to the operation).

MainPage.xaml

 <Page x:Class="App1.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" FontSize="50" FontWeight="Bold"> <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}"> <Grid.RowDefinitions> <RowDefinition Height="auto" /> <RowDefinition /> </Grid.RowDefinitions> <!-- Stick in a place to show what our interval between changing content is --> <TextBlock x:Name="TimeDelta" Text="Waiting for first change..."/> <FlipView x:Name="TheFlipView" SelectionChanged="DisplayedItemChanged" Grid.Row="1"> <!-- Statically add some items --> <FlipView.Items> <FlipViewItem> <TextBlock Text="Item1" /> </FlipViewItem> <FlipViewItem> <TextBlock Text="Item2" /> </FlipViewItem> <FlipViewItem> <TextBlock Text="Item3" /> </FlipViewItem> </FlipView.Items> </FlipView> </Grid> </Page> 

MainPage.xaml.cs

 using System; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Navigation; namespace App1 { /// <summary> /// An empty page that can be used on its own or navigated to within a Frame. /// </summary> public sealed partial class MainPage { //Make a place to store the timer private readonly DispatcherTimer _timer; //Make a place to store the last time the displayed item was set private DateTime _lastChange; public MainPage() { InitializeComponent(); //Configure the timer _timer = new DispatcherTimer { //Set the interval between ticks (in this case 2 seconds to see it working) Interval = TimeSpan.FromSeconds(2) }; //Change what displayed when the timer ticks _timer.Tick += ChangeImage; //Start the timer _timer.Start(); } /// <summary> /// Changes the image when the timer ticks /// </summary> /// <param name="sender"></param> /// <param name="o"></param> private void ChangeImage(object sender, object o) { //Get the number of items in the flip view var totalItems = TheFlipView.Items.Count; //Figure out the new item index (the current index plus one, if the next item would be out of range, go back to zero) var newItemIndex = (TheFlipView.SelectedIndex + 1) % totalItems; //Set the displayed item index on the flip view TheFlipView.SelectedIndex = newItemIndex; } /// <summary> /// Invoked when this page is about to be displayed in a Frame. /// </summary> /// <param name="e">Event data that describes how this page was reached. The Parameter /// property is typically used to configure the page.</param> protected override void OnNavigatedTo(NavigationEventArgs e) { } /// <summary> /// When the user changes the item displayed manually, reset the timer so we don't advance at the remainder of the last interval /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void DisplayedItemChanged(object sender, SelectionChangedEventArgs e) { //Show the time deltas... var currentTime = DateTime.Now; if (_lastChange != default(DateTime)) { TimeDelta.Text = (currentTime - _lastChange).ToString(); } _lastChange = currentTime; //Since the page is configured before the timer is, check to make sure that we've actually got a timer if (!ReferenceEquals(_timer, null)) { _timer.Stop(); _timer.Start(); } } } } 
+8
source

All Articles