0

Ich habe Stapel von Bildern in einem Raster, und ich möchte eine Diashow für sie implementieren.Ich verwende Microsoft VS 2010 Express Edition für Windows Telefon für Implementieren dieses. Kann jemand helfen? Der Code ist:Willst du eine Diashow von Bildern auf Knopfdruck in Windows Phone 7 haben

using System; 
using System.Collections.Generic; 

using System.Windows.Threading; 

    namespace swipe 
{ 
public partial class MainPage : PhoneApplicationPage 
{ 
// private DispatcherTimer tmr = new DispatcherTimer(); 

private List<string> images = new List<string>(); 

private int imageIndex = 0; 

public MainPage() 
{ 
    InitializeComponent(); 

    Loaded += new RoutedEventHandler(MainPage_Loaded); 
} 

void MainPage_Loaded(object sender, RoutedEventArgs e) 
{ 
    // tmr.Interval = TimeSpan.FromSeconds(5); 
    // tmr.Tick += new EventHandler(tmr_Tick); 

    LoadImages(); 

    ShowNextImage(); 
} 

private void LoadImages() 
{ 
    images.Add("/images/Hydrangeas.jpg"); 
    images.Add("/images/Jellyfish.jpg"); 
    images.Add("/images/Koala.jpg"); 
    images.Add("/images/Tulips.jpg"); 
} 

private void ShowNextImage() 
{ 
    // String bi = new BitmapImage(new Uri(images[imageIndex], UriKind.Relative)); 

    myImg.Source = new BitmapImage(new Uri(images[imageIndex], UriKind.Relative)); 

    imageIndex = (imageIndex + 1) % images.Count; 
    } 

    //void tmr_Tick(object sender, EventArgs e) 
    //{ 
    // ShowNextImage(); 
    //} 

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) 
    { 
    //if (!tmr.IsEnabled) 
    //{ 
    // tmr.Start(); 
    //} 

    base.OnNavigatedTo(e); 
} 
protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e) 
{ 
    //tmr.Stop(); 

    base.OnNavigatedFrom(e); 
} 

private void Play_Click(object sender, RoutedEventArgs e) 
{ 
    ShowNextImage(); 
} 

} 
} 

Antwort

3

Hier ist ein schnelles Beispiel für eine Möglichkeit, dies zu tun. Es verwendet kein Raster von Bildern, aber ich bin mir sicher, dass Sie dies nach Bedarf anpassen können.

Bearbeiten: las den Titel erneut. Wenn Sie möchten, dass dies auf Knopfdruck vorwärts geht, entfernen Sie den Timer und rufen Sie ShowNextImage() im Click-Ereignis auf.

Die Seite enthält folgende XAML:

<Image x:Name="myImg" /> 

Der Code hinter wie folgt aussieht:

private DispatcherTimer tmr = new DispatcherTimer(); 

private List<string> images = new List<string>(); 

private int imageIndex = 0; 

public MainPage() 
{ 
    InitializeComponent(); 

    Loaded += new RoutedEventHandler(MainPage_Loaded); 
} 

void MainPage_Loaded(object sender, RoutedEventArgs e) 
{ 
    tmr.Interval = TimeSpan.FromSeconds(5); 
    tmr.Tick += new EventHandler(tmr_Tick); 

    LoadImages(); 

    ShowNextImage(); 
} 

private void LoadImages() 
{ 
    // list the files (includede in the XAP file) here 
    images.Add("/images/filename1.jpg"); 
    images.Add("/images/filename2.jpg"); 
    images.Add("/images/filename3.jpg"); 
    images.Add("/images/filename4.jpg"); 
} 

private void ShowNextImage() 
{ 
    var bi = new BitmapImage(new Uri(images[imageIndex], UriKind.Relative)); 

    myImg.Source = bi; 

    imageIndex = (imageIndex + 1) % images.Count; 
} 

void tmr_Tick(object sender, EventArgs e) 
{ 
    ShowNextImage(); 
} 

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) 
{ 
    if (!tmr.IsEnabled) 
    { 
     tmr.Start(); 
    } 

    base.OnNavigatedTo(e); 
} 

protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e) 
{ 
    tmr.Stop(); 

    base.OnNavigatedFrom(e); 
} 

Beispielcode, der eine Schaltfläche zeigt unter Verwendung von Code vorzurücken aus http://cid-cc22250598bf7f04.office.live.com/self.aspx/Public/SlideShowDemo.zip

+1

Vielen Dank für die Antwort ... Ich habe es versucht, aber DispatcherTimer zeigt Fehler.Es sagt "DispatcherTimer" konnte nicht gefunden werden. und ähnlich zeigt BitmapImage auch denselben Fehler. – Shaireen

+0

immer noch bitmapImage zeigt Fehler ... Was könnte das Problem sein? – Shaireen

+0

Fügen Sie System.Windows.Threading als Referenz hinzu und fügen Sie "using System.Windows.Threading;" in den folgenden Code ein: – sv88erik

1

Der einfache Weg ist eine Sammlung von Bildern zu erstellen, und und in der Sammlung zum nächsten Bild gehen, wenn Sie zur nächsten Seite in einer Pivot-Seite.

Eine andere Lösung besteht darin, eine Benutzersteuerung zu erstellen. Here ist eine Anleitung, wie man es in Silverlight (aber nicht in WP7, aber es ist sehr ähnlich).

+0

Thanx heruntergeladen werden für die Antwort ..got nur Ihre Antwort in 3 Stunden: (... Aber mein Problem ist, dass ich nicht Slideshow-Steuerelement in der Toolkit.Wow, um das zu bekommen? – Shaireen

+0

Kann man sagen, ho w, um Slideshow-Kontrolle im Toolkit zu haben? – Shaireen

+0

WP7-Toolkit hat kein Bild-Slideshow-Steuerelement in WP7. Aber eine Pivot-Seite ist eine Diashow. of content – sv88erik